sparclclient 1.2.1.dev6__py2.py3-none-any.whl → 1.2.2b1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sparcl/Results.py +11 -2
- sparcl/__init__.py +3 -10
- sparcl/client.py +111 -24
- sparcl/exceptions.py +3 -1
- sparcl/notebooks/sparcl-examples.ipynb +1533 -0
- sparcl/utils.py +13 -0
- {sparclclient-1.2.1.dev6.dist-info → sparclclient-1.2.2b1.dist-info}/METADATA +2 -2
- sparclclient-1.2.2b1.dist-info/RECORD +19 -0
- sparclclient-1.2.1.dev6.dist-info/RECORD +0 -18
- {sparclclient-1.2.1.dev6.dist-info → sparclclient-1.2.2b1.dist-info}/LICENSE +0 -0
- {sparclclient-1.2.1.dev6.dist-info → sparclclient-1.2.2b1.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,1533 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"metadata": {
|
|
6
|
+
"tags": []
|
|
7
|
+
},
|
|
8
|
+
"source": [
|
|
9
|
+
"# SPARCLCLIENT"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"cell_type": "code",
|
|
14
|
+
"execution_count": 1,
|
|
15
|
+
"metadata": {
|
|
16
|
+
"tags": []
|
|
17
|
+
},
|
|
18
|
+
"outputs": [],
|
|
19
|
+
"source": [
|
|
20
|
+
"__author__ = 'Steve Pothier <steve.pothier@noirlab.edu>'\n",
|
|
21
|
+
"__version__ = '20240224' # yyyymmdd; \n",
|
|
22
|
+
"__keywords__ = ['HowTo', 'astronomy', 'tutorial', 'client', 'sparcl', 'NOIRlab']"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"cell_type": "markdown",
|
|
27
|
+
"metadata": {
|
|
28
|
+
"editable": true,
|
|
29
|
+
"slideshow": {
|
|
30
|
+
"slide_type": ""
|
|
31
|
+
},
|
|
32
|
+
"tags": []
|
|
33
|
+
},
|
|
34
|
+
"source": [
|
|
35
|
+
"This notebook demonstrates using the `sparclclient` package to get metadata and spectra data from the *NOIRLab SPARCL Server*."
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"cell_type": "markdown",
|
|
40
|
+
"metadata": {
|
|
41
|
+
"tags": []
|
|
42
|
+
},
|
|
43
|
+
"source": [
|
|
44
|
+
"## Table of contents\n",
|
|
45
|
+
"* [Goals & Summary](#goals)\n",
|
|
46
|
+
"* [Imports and setup](#imports)\n",
|
|
47
|
+
"* [Install `sparclclient`](#install)\n",
|
|
48
|
+
"* [Prepare to use sparcl](#prepare)\n",
|
|
49
|
+
"* [Get general info from sparcl](#info)\n",
|
|
50
|
+
"* [Get Metadata and Spectra](#get)"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"cell_type": "markdown",
|
|
55
|
+
"metadata": {
|
|
56
|
+
"tags": []
|
|
57
|
+
},
|
|
58
|
+
"source": [
|
|
59
|
+
"<a class=\"anchor\" id=\"goals\"></a>\n",
|
|
60
|
+
"## Goals & Summary \n",
|
|
61
|
+
"Demonstrate the use of the `sparclclient` package to get metadata and spectra data from the [NOIRLab SPARCL](https://astrosparcl.datalab.noirlab.edu/). Show how to get non-public data if you have authorized credentials.\n",
|
|
62
|
+
"- Discovery: Search for matching metadata and return metadata records.\n",
|
|
63
|
+
"- Retrieve spectra"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"cell_type": "markdown",
|
|
68
|
+
"metadata": {
|
|
69
|
+
"tags": []
|
|
70
|
+
},
|
|
71
|
+
"source": [
|
|
72
|
+
"<a class=\"anchor\" id=\"imports\"></a>\n",
|
|
73
|
+
"## Imports and Setup"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"cell_type": "code",
|
|
78
|
+
"execution_count": 2,
|
|
79
|
+
"metadata": {},
|
|
80
|
+
"outputs": [],
|
|
81
|
+
"source": [
|
|
82
|
+
"from pprint import pformat as pf\n",
|
|
83
|
+
"from pprint import pp\n",
|
|
84
|
+
"import os.path\n",
|
|
85
|
+
"from importlib import reload\n",
|
|
86
|
+
"from collections import defaultdict\n",
|
|
87
|
+
"from datetime import datetime\n",
|
|
88
|
+
"import warnings\n",
|
|
89
|
+
"from getpass import getpass\n",
|
|
90
|
+
"\n",
|
|
91
|
+
"import matplotlib.pyplot as plt\n",
|
|
92
|
+
"import numpy as np\n",
|
|
93
|
+
"import pandas as pd\n",
|
|
94
|
+
"\n",
|
|
95
|
+
"class StopExecution(Exception):\n",
|
|
96
|
+
" def _render_traceback_(self):\n",
|
|
97
|
+
" pass\n",
|
|
98
|
+
"\n",
|
|
99
|
+
"# %matplotlib inline\n",
|
|
100
|
+
"# requires installing ipympl\n",
|
|
101
|
+
"%matplotlib widget\n",
|
|
102
|
+
"plt.rcParams['font.size'] = 14"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"cell_type": "markdown",
|
|
107
|
+
"metadata": {
|
|
108
|
+
"tags": []
|
|
109
|
+
},
|
|
110
|
+
"source": [
|
|
111
|
+
"<a class=\"anchor\" id=\"install\"></a>\n",
|
|
112
|
+
"## Install most recent version of the `sparclclient`\n",
|
|
113
|
+
"*NOTE: After installing the most recent version, please restart your kernel.*"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"cell_type": "code",
|
|
118
|
+
"execution_count": 3,
|
|
119
|
+
"metadata": {},
|
|
120
|
+
"outputs": [
|
|
121
|
+
{
|
|
122
|
+
"name": "stdout",
|
|
123
|
+
"output_type": "stream",
|
|
124
|
+
"text": [
|
|
125
|
+
"Processing /home/pothiers/sandbox/sparclclient\n",
|
|
126
|
+
" Installing build dependencies ... \u001b[?25ldone\n",
|
|
127
|
+
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
|
|
128
|
+
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
|
|
129
|
+
"\u001b[?25hBuilding wheels for collected packages: sparclclient\n",
|
|
130
|
+
" Building wheel for sparclclient (pyproject.toml) ... \u001b[?25ldone\n",
|
|
131
|
+
"\u001b[?25h Created wheel for sparclclient: filename=sparclclient-1.2.1-py2.py3-none-any.whl size=2720004 sha256=3a32482228256727ce0668582370ca7e21f1a15d56966195599ef45fca8dc8b7\n",
|
|
132
|
+
" Stored in directory: /tmp/pip-ephem-wheel-cache-pjh6yrrs/wheels/9b/de/a2/3f7a82cf4ca7c9e775a1ed1daeea35010570464a1aaa8c370c\n",
|
|
133
|
+
"Successfully built sparclclient\n",
|
|
134
|
+
"Installing collected packages: sparclclient\n",
|
|
135
|
+
" Attempting uninstall: sparclclient\n",
|
|
136
|
+
" Found existing installation: sparclclient 1.2.1\n",
|
|
137
|
+
" Uninstalling sparclclient-1.2.1:\n",
|
|
138
|
+
" Successfully uninstalled sparclclient-1.2.1\n",
|
|
139
|
+
"Successfully installed sparclclient-1.2.1\n"
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"source": [
|
|
144
|
+
"#! pip install sparclclient==1.2.1.dev2 # A specific version \n",
|
|
145
|
+
"#!pip install -upgrade sparclclient # Latest released version\n",
|
|
146
|
+
"#!pip install --pre -upgrade sparclclient # Lastest pre-released version\n",
|
|
147
|
+
"\n",
|
|
148
|
+
"# Uncomment next line to load SPARCLCLIENT from local current version of software.\n",
|
|
149
|
+
"!pip install --pre --upgrade ../.."
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"cell_type": "code",
|
|
154
|
+
"execution_count": 4,
|
|
155
|
+
"metadata": {},
|
|
156
|
+
"outputs": [
|
|
157
|
+
{
|
|
158
|
+
"name": "stdout",
|
|
159
|
+
"output_type": "stream",
|
|
160
|
+
"text": [
|
|
161
|
+
"Run started: 2024-02-28 06:07:40.253046\n"
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"source": [
|
|
166
|
+
"import sparcl.client\n",
|
|
167
|
+
"print(f'Run started: {str(datetime.now())}')"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"cell_type": "markdown",
|
|
172
|
+
"metadata": {
|
|
173
|
+
"editable": true,
|
|
174
|
+
"slideshow": {
|
|
175
|
+
"slide_type": ""
|
|
176
|
+
},
|
|
177
|
+
"tags": []
|
|
178
|
+
},
|
|
179
|
+
"source": [
|
|
180
|
+
"<a class=\"anchor\" id=\"prepare\"></a>\n",
|
|
181
|
+
"# Configure SPARCLCLIENT"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"cell_type": "code",
|
|
186
|
+
"execution_count": 5,
|
|
187
|
+
"metadata": {
|
|
188
|
+
"scrolled": true
|
|
189
|
+
},
|
|
190
|
+
"outputs": [
|
|
191
|
+
{
|
|
192
|
+
"name": "stdin",
|
|
193
|
+
"output_type": "stream",
|
|
194
|
+
"text": [
|
|
195
|
+
" ········\n"
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"source": [
|
|
200
|
+
"# How much output to we want to show?\n",
|
|
201
|
+
"show_help = False # HELP for client functions\n",
|
|
202
|
+
"show_curl = False # Show the underlying SPARCL Server API call\n",
|
|
203
|
+
"\n",
|
|
204
|
+
"server = 'http://localhost:8050' # internal DEV Server\n",
|
|
205
|
+
"#server = 'https://sparc1.datalab.noirlab.edu' # internal TEST Server\n",
|
|
206
|
+
"#server = 'https://astrosparcl.datalab.noirlab.edu' # Public Server\n",
|
|
207
|
+
"priv_dr = 'SDSS-DR17'\n",
|
|
208
|
+
"\n",
|
|
209
|
+
"# Authenticated Users that are never authorized for anything important.\n",
|
|
210
|
+
"# These are authenticated on both Public and Test SSO servers.\n",
|
|
211
|
+
"auth_user = 'test_user_1@noirlab.edu'\n",
|
|
212
|
+
"unauth_user = 'test_user_2@noirlab.edu'\n",
|
|
213
|
+
"non_user = 'test_user_3@noirlab.edu'\n",
|
|
214
|
+
"usrpw = getpass()"
|
|
215
|
+
]
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"cell_type": "code",
|
|
219
|
+
"execution_count": 6,
|
|
220
|
+
"metadata": {
|
|
221
|
+
"scrolled": true
|
|
222
|
+
},
|
|
223
|
+
"outputs": [
|
|
224
|
+
{
|
|
225
|
+
"name": "stdout",
|
|
226
|
+
"output_type": "stream",
|
|
227
|
+
"text": [
|
|
228
|
+
"client=(sparclclient:1.2.1, api:11.0, http://localhost:8050/sparc, client_hash=4d57bf46ad2f857d62cf9c968d6611d7090e4c16, verbose=False, connect_timeout=1.1, read_timeout=5400.0)\n"
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"source": [
|
|
233
|
+
"if show_help:\n",
|
|
234
|
+
" help(sparcl.client.SparclClient)\n",
|
|
235
|
+
"client = sparcl.client.SparclClient(url=server, show_curl=show_curl)\n",
|
|
236
|
+
"print(f'{client=}')"
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"cell_type": "markdown",
|
|
241
|
+
"metadata": {},
|
|
242
|
+
"source": [
|
|
243
|
+
"<a class=\"anchor\" id=\"info\"></a>\n",
|
|
244
|
+
"# Info"
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"cell_type": "markdown",
|
|
249
|
+
"metadata": {},
|
|
250
|
+
"source": [
|
|
251
|
+
"<a class=\"anchor\" id=\"datasets\"></a>\n",
|
|
252
|
+
"## Data sets available in SPARCL\n",
|
|
253
|
+
"List all currently available data sets from the server/url associated with client"
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"cell_type": "code",
|
|
258
|
+
"execution_count": 7,
|
|
259
|
+
"metadata": {},
|
|
260
|
+
"outputs": [
|
|
261
|
+
{
|
|
262
|
+
"data": {
|
|
263
|
+
"text/plain": [
|
|
264
|
+
"{'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}"
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
"execution_count": 7,
|
|
268
|
+
"metadata": {},
|
|
269
|
+
"output_type": "execute_result"
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
"source": [
|
|
273
|
+
"client.all_datasets"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"cell_type": "markdown",
|
|
278
|
+
"metadata": {},
|
|
279
|
+
"source": [
|
|
280
|
+
"<a class=\"anchor\" id=\"defaultfieldnames\"></a>\n",
|
|
281
|
+
"## Get default field names\n",
|
|
282
|
+
"Gets fields tagged as 'default' that are common to all data sets in the `dataset_list` passed to the function. If `dataset_list` is None (the default), the function returns the intersection of 'default' fields across all datasets currently available in the SPARC database. The following example of this function produces the same output as it would with no `dataset_list` argument because we currently only have SDSS-DR16 and BOSS-DR16 records in the SPARC database."
|
|
283
|
+
]
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"cell_type": "code",
|
|
287
|
+
"execution_count": 8,
|
|
288
|
+
"metadata": {
|
|
289
|
+
"scrolled": true
|
|
290
|
+
},
|
|
291
|
+
"outputs": [],
|
|
292
|
+
"source": [
|
|
293
|
+
"if show_help:\n",
|
|
294
|
+
" client.get_default_fields?"
|
|
295
|
+
]
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"cell_type": "code",
|
|
299
|
+
"execution_count": 9,
|
|
300
|
+
"metadata": {},
|
|
301
|
+
"outputs": [
|
|
302
|
+
{
|
|
303
|
+
"data": {
|
|
304
|
+
"text/plain": [
|
|
305
|
+
"['dec', 'flux', 'ra', 'sparcl_id', 'specid', 'wavelength']"
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
"execution_count": 9,
|
|
309
|
+
"metadata": {},
|
|
310
|
+
"output_type": "execute_result"
|
|
311
|
+
}
|
|
312
|
+
],
|
|
313
|
+
"source": [
|
|
314
|
+
"client.get_default_fields(dataset_list=['SDSS-DR16', 'BOSS-DR16'])"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"cell_type": "markdown",
|
|
319
|
+
"metadata": {},
|
|
320
|
+
"source": [
|
|
321
|
+
"<a class=\"anchor\" id=\"allfieldnames\"></a>\n",
|
|
322
|
+
"## Get all field names\n",
|
|
323
|
+
"Gets fields tagged as 'all' that are common to all data sets in the `dataset_list` passed to the function. If `dataset_list` is None (the default), the function returns the intersection of 'all' fields across all datasets currently available in the SPARC database. The following example of this function produces the same output as it would with no `dataset_list` argument because we currently only have SDSS-DR16 and BOSS-DR16 records in the SPARC database."
|
|
324
|
+
]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"cell_type": "code",
|
|
328
|
+
"execution_count": 10,
|
|
329
|
+
"metadata": {},
|
|
330
|
+
"outputs": [
|
|
331
|
+
{
|
|
332
|
+
"data": {
|
|
333
|
+
"text/plain": [
|
|
334
|
+
"\u001b[0;31mSignature:\u001b[0m \u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_all_fields\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdataset_list\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
335
|
+
"\u001b[0;31mDocstring:\u001b[0m\n",
|
|
336
|
+
"Get fields tagged as 'all' that are in DATASET_LIST.\n",
|
|
337
|
+
"These are the fields used for the ALL value of the include parameter\n",
|
|
338
|
+
"of client.retrieve().\n",
|
|
339
|
+
"\n",
|
|
340
|
+
"Args:\n",
|
|
341
|
+
" dataset_list (:obj:`list`, optional): List of data sets from\n",
|
|
342
|
+
" which to get all fields. Defaults to None, which\n",
|
|
343
|
+
" will return the intersection of all fields in all\n",
|
|
344
|
+
" data sets hosted on the SPARCL database.\n",
|
|
345
|
+
"\n",
|
|
346
|
+
"Returns:\n",
|
|
347
|
+
" List of fields tagged as 'all' from DATASET_LIST.\n",
|
|
348
|
+
"\n",
|
|
349
|
+
"Example:\n",
|
|
350
|
+
" >>> client = SparclClient()\n",
|
|
351
|
+
" >>> client.get_all_fields()\n",
|
|
352
|
+
" ['data_release', 'datasetgroup', 'dateobs', 'dateobs_center', 'dec', 'exptime', 'flux', 'instrument', 'ivar', 'mask', 'model', 'ra', 'redshift', 'redshift_err', 'redshift_warning', 'site', 'sparcl_id', 'specid', 'specprimary', 'spectype', 'survey', 'targetid', 'telescope', 'wave_sigma', 'wavelength', 'wavemax', 'wavemin']\n",
|
|
353
|
+
"\u001b[0;31mFile:\u001b[0m ~/sandbox/sparclclient/venv/lib/python3.10/site-packages/sparcl/client.py\n",
|
|
354
|
+
"\u001b[0;31mType:\u001b[0m method"
|
|
355
|
+
]
|
|
356
|
+
},
|
|
357
|
+
"metadata": {},
|
|
358
|
+
"output_type": "display_data"
|
|
359
|
+
}
|
|
360
|
+
],
|
|
361
|
+
"source": [
|
|
362
|
+
"client.get_all_fields?"
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"cell_type": "code",
|
|
367
|
+
"execution_count": 11,
|
|
368
|
+
"metadata": {},
|
|
369
|
+
"outputs": [
|
|
370
|
+
{
|
|
371
|
+
"name": "stdout",
|
|
372
|
+
"output_type": "stream",
|
|
373
|
+
"text": [
|
|
374
|
+
"['ancillary_target1', 'ancillary_target2', 'anyandmask', 'anyormask', 'bluefiber', 'boss_specobj_id', 'boss_target1', 'boss_target2', 'calibflux', 'calibflux_ivar', 'chi68p', 'chunk', 'class_noqso', 'class_person', 'comments_person', 'cx', 'cy', 'cz', 'data_release', 'datasetgroup', 'dateobs', 'dateobs_center', 'dec', 'deredsn2', 'designid', 'dof', 'eboss_target0', 'eboss_target1', 'eboss_target2', 'eboss_target_id', 'elodie_bv', 'elodie_dof', 'elodie_feh', 'elodie_filename', 'elodie_logg', 'elodie_object', 'elodie_rchi2', 'elodie_sptype', 'elodie_teff', 'elodie_z', 'elodie_z_err', 'elodie_z_modelerr', 'exptime', 'fiberid', 'firstrelease', 'flux', 'fluxobjid', 'fracnsighi', 'fracnsiglo', 'fracnsigma', 'instrument', 'ivar', 'lambda_eff', 'legacy_target1', 'legacy_target2', 'marvels_target1', 'marvels_target2', 'mask', 'mjd', 'model', 'npoly', 'nspecobs', 'nturnoff', 'objid', 'plate', 'plateid', 'platequality', 'platerun', 'platesn2', 'primtarget', 'programname', 'ra', 'rchi2', 'rchi2diff', 'rchi2diff_noqso', 'redshift', 'redshift_err', 'redshift_warning', 'run1d', 'run2d', 'sectarget', 'segue1_target1', 'segue1_target2', 'segue2_target1', 'segue2_target2', 'site', 'sky', 'sn_median', 'sn_median_all', 'snturnoff', 'sourcetype', 'sparcl_id', 'spec1_g', 'spec1_i', 'spec1_r', 'spec2_g', 'spec2_i', 'spec2_r', 'specboss', 'special_target1', 'special_target2', 'specid', 'speclegacy', 'specprimary', 'specsdss', 'specsegue', 'specsegue1', 'specsegue2', 'spectroflux', 'spectroflux_ivar', 'spectrographid', 'spectroskyflux', 'spectrosynflux', 'spectrosynflux_ivar', 'spectype', 'subclass', 'subclass_noqso', 'survey', 'targetid', 'targetobjid', 'targettype', 'tcolumn', 'telescope', 'tfile', 'theta', 'thing_id', 'thing_id_targeting', 'tile', 'vdisp', 'vdisp_err', 'vdispchi2', 'vdispdof', 'vdispnpix', 'vdispz', 'vdispz_err', 'wave_sigma', 'wavelength', 'wavemax', 'wavemin', 'wcoverage', 'xfocal', 'yfocal', 'z_conf_person', 'z_err_noqso', 'z_noqso', 'z_person', 'zoffset', 'zwarning_noqso']\n"
|
|
375
|
+
]
|
|
376
|
+
}
|
|
377
|
+
],
|
|
378
|
+
"source": [
|
|
379
|
+
"print(sorted(client.get_all_fields(dataset_list=['SDSS-DR16', 'BOSS-DR16'])))"
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"cell_type": "markdown",
|
|
384
|
+
"metadata": {},
|
|
385
|
+
"source": [
|
|
386
|
+
"## Version of Server API used by this client"
|
|
387
|
+
]
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"cell_type": "code",
|
|
391
|
+
"execution_count": 12,
|
|
392
|
+
"metadata": {},
|
|
393
|
+
"outputs": [
|
|
394
|
+
{
|
|
395
|
+
"data": {
|
|
396
|
+
"text/plain": [
|
|
397
|
+
"11.0"
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
"execution_count": 12,
|
|
401
|
+
"metadata": {},
|
|
402
|
+
"output_type": "execute_result"
|
|
403
|
+
}
|
|
404
|
+
],
|
|
405
|
+
"source": [
|
|
406
|
+
"client.version"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"cell_type": "markdown",
|
|
411
|
+
"metadata": {},
|
|
412
|
+
"source": [
|
|
413
|
+
"<a class=\"anchor\" id=\"get\"></a>\n",
|
|
414
|
+
"# Get Metadata and Spectra"
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"cell_type": "markdown",
|
|
419
|
+
"metadata": {},
|
|
420
|
+
"source": [
|
|
421
|
+
"<a class=\"anchor\" id=\"find\"></a>\n",
|
|
422
|
+
"## Get Metadata: `client.find`"
|
|
423
|
+
]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"cell_type": "markdown",
|
|
427
|
+
"metadata": {},
|
|
428
|
+
"source": [
|
|
429
|
+
"The first way you can discover your data is by using SPARCL's `client.find()` method, which allows you to find records in the SPARCL database based on certain parameters passed to the function. Only Core fields may be in the `outfields` and `constraints` parameters. The descriptions for all fields, including Core fields, is located [here](https://astrosparcl.datalab.noirlab.edu/sparc/sfc/). The SPARCL Core fields constraint types are:\n",
|
|
430
|
+
"\n",
|
|
431
|
+
"\n",
|
|
432
|
+
"| Field name | Constraint type | Example |\n",
|
|
433
|
+
"|:----------------|:---------------|:-------|\n",
|
|
434
|
+
"| id | List of values (but not<br>intended for data discovery) | ['00001658-460c-4da1-987d-e493d8c9b89b',<br>'000017b6-56a2-4f87-8828-3a3409ba1083']\n",
|
|
435
|
+
"| specid | List of values | [6988698046080241664, 6971782884823945216]\n",
|
|
436
|
+
"| targetid | List of values | [1237679502171374316, 1237678619584692841]\n",
|
|
437
|
+
"| data_release | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['BOSS-DR16', 'SDSS-DR16']\n",
|
|
438
|
+
"| datasetgroup | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['SDSS_BOSS']\n",
|
|
439
|
+
"| ra | Range of values (may not<br>\"wrap\" around RA=0) | [44.53, 47.96]\n",
|
|
440
|
+
"| dec | Range of values | [2.03, 7.76]\n",
|
|
441
|
+
"| redshift | Range of values | [0.5, 0.9]\n",
|
|
442
|
+
"| redshift_err | Range of values | [0.000225, 0.000516]\n",
|
|
443
|
+
"| redshift_warning | List of values | [0, 3, 5]\n",
|
|
444
|
+
"| spectype | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['GALAXY', 'STAR']\n",
|
|
445
|
+
"| instrument | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['SDSS', 'BOSS']\n",
|
|
446
|
+
"| telescope | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['sloan25m']\n",
|
|
447
|
+
"| site | List of allowed values<br>from [SPARCL Categoricals](https://astrosparcl.datalab.noirlab.edu/sparc/cats/) | ['apo']\n",
|
|
448
|
+
"| specprimary | List of values (but typically<br>would only include 1 if<br>being used for data<br>discovery constraints) | [1]\n",
|
|
449
|
+
"| wavemin | Range of values | [3607, 3608]\n",
|
|
450
|
+
"| wavemax | Range of values | [10363, 10364]\n",
|
|
451
|
+
"| dateobs_center | Range of values | ['2013-03-14T10:16:17Z',<br>'2014-05-24T12:10:00Z']\n",
|
|
452
|
+
"| exptime | Range of values | [3603.46, 3810.12]\n",
|
|
453
|
+
"| updated | Range of values | ['2022-08-20T21:37:50.636363Z',<br>'2022-09-20T20:00:00.000000Z']\n"
|
|
454
|
+
]
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"cell_type": "code",
|
|
458
|
+
"execution_count": 13,
|
|
459
|
+
"metadata": {
|
|
460
|
+
"editable": true,
|
|
461
|
+
"scrolled": true,
|
|
462
|
+
"slideshow": {
|
|
463
|
+
"slide_type": ""
|
|
464
|
+
},
|
|
465
|
+
"tags": []
|
|
466
|
+
},
|
|
467
|
+
"outputs": [],
|
|
468
|
+
"source": [
|
|
469
|
+
"if show_help:\n",
|
|
470
|
+
" client.find?"
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"cell_type": "markdown",
|
|
475
|
+
"metadata": {},
|
|
476
|
+
"source": [
|
|
477
|
+
"#### Define fields and constraints for metadata FIND\n",
|
|
478
|
+
"Define the fields we want returned (`outfields`) and the constraints (`constraints`)"
|
|
479
|
+
]
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"cell_type": "code",
|
|
483
|
+
"execution_count": 14,
|
|
484
|
+
"metadata": {},
|
|
485
|
+
"outputs": [],
|
|
486
|
+
"source": [
|
|
487
|
+
"out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
|
|
488
|
+
"cons = {'spectype': ['GALAXY'],\n",
|
|
489
|
+
" 'redshift': [0.5, 0.9],\n",
|
|
490
|
+
" 'data_release': ['BOSS-DR16', 'SDSS-DR16']}"
|
|
491
|
+
]
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"cell_type": "markdown",
|
|
495
|
+
"metadata": {},
|
|
496
|
+
"source": [
|
|
497
|
+
"#### Execute FIND\n",
|
|
498
|
+
"Execute the `client.find()` method with our parameters.\n",
|
|
499
|
+
"The `limit` argument here is being used for demonstration purposes only, and simply returns only the first 20 results here."
|
|
500
|
+
]
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"cell_type": "code",
|
|
504
|
+
"execution_count": 15,
|
|
505
|
+
"metadata": {
|
|
506
|
+
"scrolled": true
|
|
507
|
+
},
|
|
508
|
+
"outputs": [],
|
|
509
|
+
"source": [
|
|
510
|
+
"found = client.find(outfields=out, constraints=cons, limit=20)"
|
|
511
|
+
]
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"cell_type": "code",
|
|
515
|
+
"execution_count": null,
|
|
516
|
+
"metadata": {
|
|
517
|
+
"scrolled": true
|
|
518
|
+
},
|
|
519
|
+
"outputs": [],
|
|
520
|
+
"source": []
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"cell_type": "code",
|
|
524
|
+
"execution_count": 16,
|
|
525
|
+
"metadata": {},
|
|
526
|
+
"outputs": [
|
|
527
|
+
{
|
|
528
|
+
"data": {
|
|
529
|
+
"text/html": [
|
|
530
|
+
"<div>\n",
|
|
531
|
+
"<style scoped>\n",
|
|
532
|
+
" .dataframe tbody tr th:only-of-type {\n",
|
|
533
|
+
" vertical-align: middle;\n",
|
|
534
|
+
" }\n",
|
|
535
|
+
"\n",
|
|
536
|
+
" .dataframe tbody tr th {\n",
|
|
537
|
+
" vertical-align: top;\n",
|
|
538
|
+
" }\n",
|
|
539
|
+
"\n",
|
|
540
|
+
" .dataframe thead th {\n",
|
|
541
|
+
" text-align: right;\n",
|
|
542
|
+
" }\n",
|
|
543
|
+
"</style>\n",
|
|
544
|
+
"<table border=\"1\" class=\"dataframe\">\n",
|
|
545
|
+
" <thead>\n",
|
|
546
|
+
" <tr style=\"text-align: right;\">\n",
|
|
547
|
+
" <th></th>\n",
|
|
548
|
+
" <th>dec</th>\n",
|
|
549
|
+
" <th>sparcl_id</th>\n",
|
|
550
|
+
" <th>redshift_err</th>\n",
|
|
551
|
+
" <th>data_release</th>\n",
|
|
552
|
+
" <th>specid</th>\n",
|
|
553
|
+
" <th>redshift</th>\n",
|
|
554
|
+
" <th>spectype</th>\n",
|
|
555
|
+
" <th>ra</th>\n",
|
|
556
|
+
" <th>_dr</th>\n",
|
|
557
|
+
" </tr>\n",
|
|
558
|
+
" </thead>\n",
|
|
559
|
+
" <tbody>\n",
|
|
560
|
+
" <tr>\n",
|
|
561
|
+
" <th>0</th>\n",
|
|
562
|
+
" <td>28.063643</td>\n",
|
|
563
|
+
" <td>bb3d4287-8a2f-479f-9c7f-1053051e4925</td>\n",
|
|
564
|
+
" <td>0.000332</td>\n",
|
|
565
|
+
" <td>BOSS-DR16</td>\n",
|
|
566
|
+
" <td>-6444532452352045056</td>\n",
|
|
567
|
+
" <td>0.761637</td>\n",
|
|
568
|
+
" <td>GALAXY</td>\n",
|
|
569
|
+
" <td>132.14379</td>\n",
|
|
570
|
+
" <td>BOSS-DR16</td>\n",
|
|
571
|
+
" </tr>\n",
|
|
572
|
+
" </tbody>\n",
|
|
573
|
+
"</table>\n",
|
|
574
|
+
"</div>"
|
|
575
|
+
],
|
|
576
|
+
"text/plain": [
|
|
577
|
+
" dec sparcl_id redshift_err data_release \\\n",
|
|
578
|
+
"0 28.063643 bb3d4287-8a2f-479f-9c7f-1053051e4925 0.000332 BOSS-DR16 \n",
|
|
579
|
+
"\n",
|
|
580
|
+
" specid redshift spectype ra _dr \n",
|
|
581
|
+
"0 -6444532452352045056 0.761637 GALAXY 132.14379 BOSS-DR16 "
|
|
582
|
+
]
|
|
583
|
+
},
|
|
584
|
+
"execution_count": 16,
|
|
585
|
+
"metadata": {},
|
|
586
|
+
"output_type": "execute_result"
|
|
587
|
+
}
|
|
588
|
+
],
|
|
589
|
+
"source": [
|
|
590
|
+
"pd.DataFrame.from_records(found.records)"
|
|
591
|
+
]
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"cell_type": "markdown",
|
|
595
|
+
"metadata": {},
|
|
596
|
+
"source": [
|
|
597
|
+
"<a class=\"anchor\" id=\"retrieve\"></a>\n",
|
|
598
|
+
"## Get Spectra: `client.retrieve`"
|
|
599
|
+
]
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"cell_type": "markdown",
|
|
603
|
+
"metadata": {},
|
|
604
|
+
"source": [
|
|
605
|
+
"In order to retrieve spectra records from SPARCL, pass the following to the `client.retrieve()` function:\n",
|
|
606
|
+
"```\n",
|
|
607
|
+
"uuid_list : List of IDs.\n",
|
|
608
|
+
"dataset_list : List of data sets to search for the IDs in (default: None).\n",
|
|
609
|
+
"include : List of field names to include in each record (default: 'DEFAULT').\n",
|
|
610
|
+
"```\n",
|
|
611
|
+
"\n",
|
|
612
|
+
"**NOTE: A reasonable amount of records to request retrieval of is about 10,000. Exceeding this value may cause the retrieval to timeout or fail.**"
|
|
613
|
+
]
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"cell_type": "code",
|
|
617
|
+
"execution_count": 17,
|
|
618
|
+
"metadata": {
|
|
619
|
+
"scrolled": true
|
|
620
|
+
},
|
|
621
|
+
"outputs": [],
|
|
622
|
+
"source": [
|
|
623
|
+
"if show_help:\n",
|
|
624
|
+
" client.retrieve?"
|
|
625
|
+
]
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"cell_type": "markdown",
|
|
629
|
+
"metadata": {},
|
|
630
|
+
"source": [
|
|
631
|
+
"#### Use IDs from FIND to RETRIEVE records\n",
|
|
632
|
+
"Use the IDs from the output of using `client.find()` to retrieve records from SPARCL. \n",
|
|
633
|
+
"\n",
|
|
634
|
+
"Note that `ids` in `found_I.ids` is a property name of the Found class. It is a list of records from all records, not a field name of a record."
|
|
635
|
+
]
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"cell_type": "code",
|
|
639
|
+
"execution_count": 18,
|
|
640
|
+
"metadata": {},
|
|
641
|
+
"outputs": [],
|
|
642
|
+
"source": [
|
|
643
|
+
"# Define the fields to include in the retrieve function\n",
|
|
644
|
+
"inc = ['specid', 'data_release', 'redshift', 'flux', 'wavelength', 'model', 'ivar', 'mask', 'spectype']"
|
|
645
|
+
]
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"cell_type": "code",
|
|
649
|
+
"execution_count": null,
|
|
650
|
+
"metadata": {},
|
|
651
|
+
"outputs": [],
|
|
652
|
+
"source": []
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"cell_type": "code",
|
|
656
|
+
"execution_count": 19,
|
|
657
|
+
"metadata": {},
|
|
658
|
+
"outputs": [
|
|
659
|
+
{
|
|
660
|
+
"name": "stdout",
|
|
661
|
+
"output_type": "stream",
|
|
662
|
+
"text": [
|
|
663
|
+
"CPU times: user 3.05 ms, sys: 0 ns, total: 3.05 ms\n",
|
|
664
|
+
"Wall time: 50 ms\n"
|
|
665
|
+
]
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"data": {
|
|
669
|
+
"text/plain": [
|
|
670
|
+
"{'status': {'success': True,\n",
|
|
671
|
+
" 'info': [\"Successfully found 1 records in dr_list=['SDSS-DR16', 'BOSS-DR16']\"],\n",
|
|
672
|
+
" 'warnings': []}}"
|
|
673
|
+
]
|
|
674
|
+
},
|
|
675
|
+
"execution_count": 19,
|
|
676
|
+
"metadata": {},
|
|
677
|
+
"output_type": "execute_result"
|
|
678
|
+
}
|
|
679
|
+
],
|
|
680
|
+
"source": [
|
|
681
|
+
"%%time\n",
|
|
682
|
+
"results = client.retrieve(uuid_list=found.ids,\n",
|
|
683
|
+
" include=inc,\n",
|
|
684
|
+
" dataset_list=['SDSS-DR16','BOSS-DR16'])\n",
|
|
685
|
+
"results.info"
|
|
686
|
+
]
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"cell_type": "code",
|
|
690
|
+
"execution_count": 20,
|
|
691
|
+
"metadata": {},
|
|
692
|
+
"outputs": [
|
|
693
|
+
{
|
|
694
|
+
"data": {
|
|
695
|
+
"text/plain": [
|
|
696
|
+
"{'data_release': 'BOSS-DR16',\n",
|
|
697
|
+
" 'redshift': 0.761636912822723,\n",
|
|
698
|
+
" 'spectype': 'GALAXY',\n",
|
|
699
|
+
" 'specid': -6444532452352045056,\n",
|
|
700
|
+
" 'wavelength': array([ 3580.13991843, 3580.96437103, 3581.78901348, ...,\n",
|
|
701
|
+
" 10368.11964061, 10370.50726326, 10372.89543574]),\n",
|
|
702
|
+
" 'ivar': array([0., 0., 0., ..., 0., 0., 0.]),\n",
|
|
703
|
+
" 'mask': array([88080384, 88080384, 88080384, ..., 83886080, 83886080, 83886080]),\n",
|
|
704
|
+
" 'model': array([-0.01559776, -0.01588696, -0.01609746, ..., 0.94615489,\n",
|
|
705
|
+
" 0.92513317, 0.8983984 ]),\n",
|
|
706
|
+
" 'flux': array([0.19426258, 0.19424935, 0.19423614, ..., 0.27637786, 0.2763944 ,\n",
|
|
707
|
+
" 0.27641097]),\n",
|
|
708
|
+
" '_dr': 'BOSS-DR16'}"
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
"execution_count": 20,
|
|
712
|
+
"metadata": {},
|
|
713
|
+
"output_type": "execute_result"
|
|
714
|
+
}
|
|
715
|
+
],
|
|
716
|
+
"source": [
|
|
717
|
+
"results.records[0]"
|
|
718
|
+
]
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
"cell_type": "markdown",
|
|
722
|
+
"metadata": {},
|
|
723
|
+
"source": [
|
|
724
|
+
"## Plot spectra"
|
|
725
|
+
]
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
"cell_type": "code",
|
|
729
|
+
"execution_count": 21,
|
|
730
|
+
"metadata": {},
|
|
731
|
+
"outputs": [
|
|
732
|
+
{
|
|
733
|
+
"data": {
|
|
734
|
+
"text/plain": [
|
|
735
|
+
"<matplotlib.legend.Legend at 0x7f194d301750>"
|
|
736
|
+
]
|
|
737
|
+
},
|
|
738
|
+
"execution_count": 21,
|
|
739
|
+
"metadata": {},
|
|
740
|
+
"output_type": "execute_result"
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"data": {
|
|
744
|
+
"application/vnd.jupyter.widget-view+json": {
|
|
745
|
+
"model_id": "5dbbfe7d6fef4a888197446c69dc27fa",
|
|
746
|
+
"version_major": 2,
|
|
747
|
+
"version_minor": 0
|
|
748
|
+
},
|
|
749
|
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAByPUlEQVR4nO3dd3hTZcMG8PtkNN0ttIW20MEou5S9N8hQX1HBgYKAijh4RUEFXICIiOuT162oIAIuFBQRkC1lyt6UXVoKLaVNdzOe7480adKMrjTpuH/XhbYnJzlPetLT5z7PkoQQAkRERERERC4gc3cBiIiIiIio7mAAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil1G4uwBUTK/XIzk5GX5+fpAkyd3FISIiIqIShBDIyspCeHg4ZDLey68IBpBqJDk5GREREe4uBhERERGVIjExEY0bN3Z3MWokBpBqxM/PD4DhA+3v7+/m0hARERFRSWq1GhEREaZ6G5UfA0g1Yux25e/vzwBCREREVI2xu3zFseMaERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DKfhrQU0Gg10Op27i0EupFQqIZfL3V0MIiIionJjAKnB1Go10tLSUFBQ4O6ikItJkoSAgACEhoZyHnIiIiKqURhAaii1Wo2kpCT4+voiODgYSqWSFdE6QgiBnJwcpKamwsvLC4GBge4uEhEREVGZMYDUUGlpafD19UXjxo0ZPOogLy8vFBQU4MaNGwgICOBngIiI6gy9XkAm49+9moyD0GsgjUaDgoICVjzrOH9/f+h0Oo7/ISKiOiP+XBri3tiI348ku7soVAkMIDWQscKpVCrdXBJyJ4XC0ICp1WrdXBIiIiLXGPf1XmTla/HsykPuLgpVAgNIDcbWj7qN55+IiIhqIgYQIiIiIiJyGQYQqpE0Gg3mzJmDmJgYqFQqSJKEDz/8EJIkYcKECe4uHhERERHZwVmwqEZ6//33MXfuXPTr1w/3338/lEolhg8fjueff97dRSMiIqIqIkkSIIS7i0GVxABCNdLatWvh6+uLv//+Gx4eHgCAS5cuubdQRERERFQqdsGiGik5ORlBQUGm8EFERERENQMDCNUoc+bMgSRJuHjxIi5fvgxJkiBJEqKjo+0+Jzo62u7jAwYMsJhN6ubNm2jcuDH8/Pxw7tw5i30dPUZEREREZcMuWFSjDBgwAADw4YcfAgCee+45AEBgYKBTXj8oKAjfffcdbrvtNjz00EOIj483rbfy2GOPISkpCUuWLEHz5s2dcjwiIiKiuoYBhGqUAQMGYMCAAViyZAkAQ4uIkbPGgAwaNAgvvfQS3n77bbz66qtYuHAhPv30U6xZswZjxozB+PHjnXIcIiIiorqIAaSWEUIgT6NzdzEc8lLKq/0iem+88QY2b96M9957D40bN8aMGTMQHR2Nzz//3N1FIyIiqrOqd+2ByooBpJbJ0+jQ5vUN7i6GQyffGAZvj+r90VMqlVi5ciU6dOiAZ599FnK5HMuXL4e/v7+7i0ZERERUo3EQOpEdTZs2RVxcHACgc+fO6NWrl5tLRERERFTzVe/b0FRuXko5Tr4xzN3FcMhLKXfp8WQyGQoLC20+lpmZafd5H3zwAeLj4xEUFIR9+/bh008/xdNPP11VxSQiIqJSVPMe3FRGDCC1jCRJ1b57k6vVq1cPx44dg1arhUJR/LPJyclBQkKCzeccOnQIL7/8Mlq2bImtW7eid+/eeOGFF9C/f3+0bdvWVUUnIiIiqnXYBYtqva5du0Kj0WD58uWmbUIIzJo1Czk5OVb75+TkYMyYMQCAlStXIiwsDCtWrIBGo8GYMWOQn5/vsrITERER1TYMIFTrTZkyBR4eHnj88ccxduxYPP/88+jatSvWrVtnGuNhburUqThz5gzeeustdOzYEQDQo0cPzJ49G8eOHcOLL77o6rdAREREVGswgFCt165dO6xfvx6dO3fGL7/8gmXLlqFNmzbYtWuX1QKGq1atwtdff43bbrsN06ZNs3js5ZdfRr9+/fDxxx9j7dq1LnwHRERERLUHBwtQjWRr0cHo6GgIIWzuP3DgQOzZs8dq+7Zt2yy+HzVqlN3XkMlk2L59e7nLSkRERETF2AJCRERERDWCxKUIawUGECIiIiKqcfZdTHd3EaiCGECIiIiIqMa5/4vd7i4CVRADCBERERERuQwDCBERERERuQwDCBERERERuQwDCBERERHVDJwEq1ZgACEiIiIiIpdhACEiIiIiIpdhACEiIiKiGoE9sGoHBhAiIiIiInIZBhAiIiIiInIZBhAiIiIiInIZBhAiJ9m2bRskScKcOXMq9TrR0dGIjo52SpmIiIiIqhsGkBK+//57TJ48GV26dIFKpYIkSViyZInd/dVqNaZNm4aoqCioVCpER0fjxRdfRHZ2tusKTURERERUQyjcXYDq5tVXX8Xly5cRHByMsLAwXL582e6+OTk56N+/Pw4fPoyhQ4dizJgxOHToEN577z1s374dO3bsgKenpwtLT0RERFR7SZwGq1ZgC0gJixcvxqVLl5Camoonn3zS4b7vvPMODh8+jBkzZmDDhg14++23sWHDBsyYMQP79+/H//3f/7mo1ERERERENQMDSAlDhgxBVFRUqfsJIbB48WL4+vritddes3jstddeg6+vLxYvXlxVxazzzMdb7Nq1CwMHDoSfnx9CQkLw9NNPIy8vDwDw559/omfPnvDx8UHDhg3x0ksvQavVWryWVqvFBx98gLi4OHh5eSEgIAADBw7EH3/8YfPYeXl5mDlzJiIiIuDp6Yl27drhq6++cljeixcv4vHHH0dkZCRUKhXCwsIwYcIEhy1sRERERLURA0gFJSQkIDk5Gb1794aPj4/FYz4+PujduzcuXLiAxMREN5Wwbti7dy8GDx6MgIAATJ48GZGRkfjss88wadIk/Pjjjxg9ejSioqIwefJkBAYG4t1338Vbb71ler4QAqNHj8b06dORn5+PZ555Bg899BCOHDmCu+66y6oVS6/X46677sLChQtRr149TJ06FT169MDz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iIiIyAk4AqT24BgQJ8vJycGJEyfg4+OD4OBgdxeHiIiIiKhaYQCpgKysLJw9e9Zqe15eHiZNmoSsrCzcf//9UCjqdAMTERERkfOwCaTWYA25Am7evIlWrVqha9euaN26NUJDQ3H9+nVs2rQJV69eRWxsLN599113F5OIiIiIqNphAKmA+vXr4+mnn8a+ffuwbt063Lp1C15eXmjdujWeffZZTJkyBV5eXu4uJhEREVGtwQaQ2oMBpAL8/f3x8ccfu7sYREREREQ1DseAEBEREVG1x5XQaw8GECIiIiIichkGECIiIiKq9sIDOb62tmAAISIiIqJqa8Wk7hjapiEWjop1d1HISTgInYiIiIiqrV7NgtGrGRd3rk0YQKhM7u3YCC/f0drdxSAiIiKiGo4BhBx6/744bDubigWjYqFSyN1dHCIiIiKq4RhAyKFRnRtjVOfG7i4GEREREdUSHIROREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCVgK8lO4uAhERERHVUgwgZGXFpO7o3qQ+Vj3Vy91FISIiIqJaRuHuAlD10zY8AD9O7unuYhARERFRLcQWECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGkCKHDx/Gyy+/jGHDhiEkJASSJGHAgAGlPm/58uXo1q0bfHx8UK9ePdx55504ePBg1ReYiIiIiKgGYgApsnr1aixYsADbtm1DaGhomZ4zf/58jB07Fjdu3MCTTz6J++67Dzt27ECvXr0QHx9fxSUmIiIiIqp5FO4uQHVx33334a677kJsbCxu3ryJsLAwh/snJCRgzpw5aNGiBfbt24eAgAAAwNNPP40ePXpg0qRJOH78OGQyZjwiIiIiIiPWjou0bdsWnTp1glKpLNP+3377LbRaLV555RVT+ACADh06YMyYMTh1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",
|
|
750
|
+
"text/html": [
|
|
751
|
+
"\n",
|
|
752
|
+
" <div style=\"display: inline-block;\">\n",
|
|
753
|
+
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|
754
|
+
" Figure\n",
|
|
755
|
+
" </div>\n",
|
|
756
|
+
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAByPUlEQVR4nO3dd3hTZcMG8PtkNN0ttIW20MEou5S9N8hQX1HBgYKAijh4RUEFXICIiOuT162oIAIuFBQRkC1lyt6UXVoKLaVNdzOe7480adKMrjTpuH/XhbYnJzlPetLT5z7PkoQQAkRERERERC4gc3cBiIiIiIio7mAAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil2EAISIiIiIil1G4uwBUTK/XIzk5GX5+fpAkyd3FISIiIqIShBDIyspCeHg4ZDLey68IBpBqJDk5GREREe4uBhERERGVIjExEY0bN3Z3MWokBpBqxM/PD4DhA+3v7+/m0hARERFRSWq1GhEREaZ6G5UfA0g1Yux25e/vzwBCREREVI2xu3zFseMaERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DAMIERERERG5DKfhrQU0Gg10Op27i0EupFQqIZfL3V0MIiIionJjAKnB1Go10tLSUFBQ4O6ikItJkoSAgACEhoZyHnIiIiKqURhAaii1Wo2kpCT4+voiODgYSqWSFdE6QgiBnJwcpKamwsvLC4GBge4uEhEREVGZMYDUUGlpafD19UXjxo0ZPOogLy8vFBQU4MaNGwgICOBngIiI6gy9XkAm49+9moyD0GsgjUaDgoICVjzrOH9/f+h0Oo7/ISKiOiP+XBri3tiI348ku7soVAkMIDWQscKpVCrdXBJyJ4XC0ICp1WrdXBIiIiLXGPf1XmTla/HsykPuLgpVAgNIDcbWj7qN55+IiIhqIgYQIiIiIiJyGQYQqpE0Gg3mzJmDmJgYqFQqSJKEDz/8EJIkYcKECe4uHhERERHZwVmwqEZ6//33MXfuXPTr1w/3338/lEolhg8fjueff97dRSMiIqIqIkkSIIS7i0GVxABCNdLatWvh6+uLv//+Gx4eHgCAS5cuubdQRERERFQqdsGiGik5ORlBQUGm8EFERERENQMDCNUoc+bMgSRJuHjxIi5fvgxJkiBJEqKjo+0+Jzo62u7jAwYMsJhN6ubNm2jcuDH8/Pxw7tw5i30dPUZEREREZcMuWFSjDBgwAADw4YcfAgCee+45AEBgYKBTXj8oKAjfffcdbrvtNjz00EOIj483rbfy2GOPISkpCUuWLEHz5s2dcjwiIiKiuoYBhGqUAQMGYMCAAViyZAkAQ4uIkbPGgAwaNAgvvfQS3n77bbz66qtYuHAhPv30U6xZswZjxozB+PHjnXIcIiIiorqIAaSWEUIgT6NzdzEc8lLKq/0iem+88QY2b96M9957D40bN8aMGTMQHR2Nzz//3N1FIyIiqrOqd+2ByooBpJbJ0+jQ5vUN7i6GQyffGAZvj+r90VMqlVi5ciU6dOiAZ599FnK5HMuXL4e/v7+7i0ZERERUo3EQOpEdTZs2RVxcHACgc+fO6NWrl5tLRERERFTzVe/b0FRuXko5Tr4xzN3FcMhLKXfp8WQyGQoLC20+lpmZafd5H3zwAeLj4xEUFIR9+/bh008/xdNPP11VxSQiIqJSVPMe3FRGDCC1jCRJ1b57k6vVq1cPx44dg1arhUJR/LPJyclBQkKCzeccOnQIL7/8Mlq2bImtW7eid+/eeOGFF9C/f3+0bdvWVUUnIiIiqnXYBYtqva5du0Kj0WD58uWmbUIIzJo1Czk5OVb75+TkYMyYMQCAlStXIiwsDCtWrIBGo8GYMWOQn5/vsrITERER1TYMIFTrTZkyBR4eHnj88ccxduxYPP/88+jatSvWrVtnGuNhburUqThz5gzeeustdOzYEQDQo0cPzJ49G8eOHcOLL77o6rdAREREVGswgFCt165dO6xfvx6dO3fGL7/8gmXLlqFNmzbYtWuX1QKGq1atwtdff43bbrsN06ZNs3js5ZdfRr9+/fDxxx9j7dq1LnwHRERERLUHBwtQjWRr0cHo6GgIIWzuP3DgQOzZs8dq+7Zt2yy+HzVqlN3XkMlk2L59e7nLSkRERETF2AJCRERERDWCxKUIawUGECIiIiKqcfZdTHd3EaiCGECIiIiIqMa5/4vd7i4CVRADCBERERERuQwDCBERERERuQwDCBERERERuQwDCBERERHVDJwEq1ZgACEiIiIiIpdhACEiIiIiIpdhACEiIiKiGoE9sGoHBhAiIiIiInIZBhAiIiIiInIZBhAiIiIiInIZBhAiJ9m2bRskScKcOXMq9TrR0dGIjo52SpmIiIiIqhsGkBK+//57TJ48GV26dIFKpYIkSViyZInd/dVqNaZNm4aoqCioVCpER0fjxRdfRHZ2tusKTURERERUQyjcXYDq5tVXX8Xly5cRHByMsLAwXL582e6+OTk56N+/Pw4fPoyhQ4dizJgxOHToEN577z1s374dO3bsgKenpwtLT0RERFR7SZwGq1ZgC0gJixcvxqVLl5Camoonn3zS4b7vvPMODh8+jBkzZmDDhg14++23sWHDBsyYMQP79+/H//3f/7mo1ERERERENQMDSAlDhgxBVFRUqfsJIbB48WL4+vritddes3jstddeg6+vLxYvXlxVxazzzMdb7Nq1CwMHDoSfnx9CQkLw9NNPIy8vDwDw559/omfPnvDx8UHDhg3x0ksvQavVWryWVqvFBx98gLi4OHh5eSEgIAADBw7EH3/8YfPYeXl5mDlzJiIiIuDp6Yl27drhq6++cljeixcv4vHHH0dkZCRUKhXCwsIwYcIEhy1sRERERLURA0gFJSQkIDk5Gb1794aPj4/FYz4+PujduzcuXLiAxMREN5Wwbti7dy8GDx6MgIAATJ48GZGRkfjss88wadIk/Pjjjxg9ejSioqIwefJkBAYG4t1338Vbb71ler4QAqNHj8b06dORn5+PZ555Bg899BCOHDmCu+66y6oVS6/X46677sLChQtRr149TJ06FT169MDz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iIiIyAk4AqT24BgQJ8vJycGJEyfg4+OD4OBgdxeHiIiIiKhaYQCpgKysLJw9e9Zqe15eHiZNmoSsrCzcf//9UCjqdAMTERERkfOwCaTWYA25Am7evIlWrVqha9euaN26NUJDQ3H9+nVs2rQJV69eRWxsLN599113F5OIiIiIqNphAKmA+vXr4+mnn8a+ffuwbt063Lp1C15eXmjdujWeffZZTJkyBV5eXu4uJhEREVGtwQaQ2oMBpAL8/f3x8ccfu7sYREREREQ1DseAEBEREVG1x5XQaw8GECIiIiIichkGECIiIiKq9sIDOb62tmAAISIiIqJqa8Wk7hjapiEWjop1d1HISTgInYiIiIiqrV7NgtGrGRd3rk0YQKhM7u3YCC/f0drdxSAiIiKiGo4BhBx6/744bDubigWjYqFSyN1dHCIiIiKq4RhAyKFRnRtjVOfG7i4GEREREdUSHIROREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCREREREQuwwBCVgK8lO4uAhERERHVUgwgZGXFpO7o3qQ+Vj3Vy91FISIiIqJaRuHuAlD10zY8AD9O7unuYhARERFRLcQWECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGECIiIiIichkGkCKHDx/Gyy+/jGHDhiEkJASSJGHAgAGlPm/58uXo1q0bfHx8UK9ePdx55504ePBg1ReYiIiIiKgGYgApsnr1aixYsADbtm1DaGhomZ4zf/58jB07Fjdu3MCTTz6J++67Dzt27ECvXr0QHx9fxSUmIiIiIqp5FO4uQHVx33334a677kJsbCxu3ryJsLAwh/snJCRgzpw5aNGiBfbt24eAgAAAwNNPP40ePXpg0qRJOH78OGQyZjwiIiIiIiPWjou0bdsWnTp1glKpLNP+3377LbRaLV555RVT+ACADh06YMyYMTh1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' width=800.0/>\n",
|
|
757
|
+
" </div>\n",
|
|
758
|
+
" "
|
|
759
|
+
],
|
|
760
|
+
"text/plain": [
|
|
761
|
+
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|
762
|
+
]
|
|
763
|
+
},
|
|
764
|
+
"metadata": {},
|
|
765
|
+
"output_type": "display_data"
|
|
766
|
+
}
|
|
767
|
+
],
|
|
768
|
+
"source": [
|
|
769
|
+
"recs = results.records\n",
|
|
770
|
+
"idx = 0\n",
|
|
771
|
+
"fig=plt.figure(1, figsize=(8,4), dpi= 100, facecolor='w', edgecolor='k')\n",
|
|
772
|
+
"fline, = plt.plot(recs[idx].flux, label=f'flux')\n",
|
|
773
|
+
"mline, = plt.plot(recs[idx].model, label=f'model')\n",
|
|
774
|
+
"plt.legend(handles=[fline,mline])"
|
|
775
|
+
]
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
"cell_type": "markdown",
|
|
779
|
+
"metadata": {
|
|
780
|
+
"toc-hr-collapsed": true
|
|
781
|
+
},
|
|
782
|
+
"source": [
|
|
783
|
+
"## Plot FLUX for all records"
|
|
784
|
+
]
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"cell_type": "code",
|
|
788
|
+
"execution_count": 22,
|
|
789
|
+
"metadata": {},
|
|
790
|
+
"outputs": [],
|
|
791
|
+
"source": [
|
|
792
|
+
"import sparcl.gather_2d\n",
|
|
793
|
+
"ar_dict, grid = sparcl.gather_2d.align_records(results.records)"
|
|
794
|
+
]
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"cell_type": "code",
|
|
798
|
+
"execution_count": 23,
|
|
799
|
+
"metadata": {},
|
|
800
|
+
"outputs": [
|
|
801
|
+
{
|
|
802
|
+
"data": {
|
|
803
|
+
"text/plain": [
|
|
804
|
+
"<Axes: xlabel='Wavelength', ylabel='Flux'>"
|
|
805
|
+
]
|
|
806
|
+
},
|
|
807
|
+
"execution_count": 23,
|
|
808
|
+
"metadata": {},
|
|
809
|
+
"output_type": "execute_result"
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
"data": {
|
|
813
|
+
"application/vnd.jupyter.widget-view+json": {
|
|
814
|
+
"model_id": "f1a22870f6db48cb8553883f946f6008",
|
|
815
|
+
"version_major": 2,
|
|
816
|
+
"version_minor": 0
|
|
817
|
+
},
|
|
818
|
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABj3UlEQVR4nO3dd3iT5cIG8DvpSEsXo5QySqHsUUH2pmUVQQUFBwgCCspBRAUB8SDgQFDBg0c9ivoJKoqiIqggIBvKlL13oYwWKHTT0jbP90dJmr2a5E3y3r/r4qJ98yR58jbjzjMVQggBIiIiIpINpdQVICIiIiL3YgAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhl/qSvgzdRqNa5evYqwsDAoFAqpq0NEREQ2EEIgJycHNWrUgFIpz7YwBsByuHr1KmJiYqSuBhERETkgNTUVtWrVkroakmAALIewsDAApU+g8PBwiWtDREREtsjOzkZMTIz2c1yOGADLQdPtGx4ezgBIRETkZeQ8fEueHd9EREREMsYASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREQkqa+3X8Afh65KXQ1Z8Ze6AkRERCRfZ6/n4q0/jwMAHmpRQ+LayAdbAImIiEgyt/PvSl0FWWIAJCIiIskIIXUN5IkBkIiIiEhmGACJiIiIZIYBkIiIiCQj2AcsCQZAIiIikgzjnzQYAImIiIhkhgGQiIiISGYYAImIiEgyHAIoDQZAIiIikozgKEBJMAASERERyQwDIBEREUmHDYCSYAAkIiIiyejmP64J6D4MgEREROQRmP/chwGQiIiIPALzn/swABIREZFk2OonDQZAIiIikozuMjAcA+g+DIBERETkERj/3IcBkIiIiCTDRj9pMAASERGRR2AYdB8GQCIiIpKM3jqA7AR2GwZAIiIi8ghsAXQfBkAiIiKSDGf+SoMBkIiIiEhmGACJiIjII/ScvwU7z2VIXQ1ZYAAkIiIiyeh2AF/JvIMhX+6SrC5ywgBIRERE0uEQQEkwABIRERHJDAMgERERkcwwABIREZFkuPizNBgAiYiISDJcBlAaDIBEREREMsMASERERCQzDIBEREREMsMASERERJJRKKSugTwxABIRERHJDAMgERERkcwwABIREZFkFGAfsBQYAImIiIhkhgGQiIiIpMMGQEkwABIRERHJjNcHwCVLluD5559HmzZtoFKpoFAosHjxYrPls7OzMXHiRMTGxkKlUqFOnTqYPHkycnNz3VdpIiIiIgn5S12B8po+fTouXryIyMhIVK9eHRcvXjRbNi8vD927d8fBgwfRp08fDBkyBAcOHMC8efOwZcsWbN26FUFBQW6sPREREZH7eX0L4FdffYWUlBTcuHEDY8eOtVj2/fffx8GDBzF16lSsXbsWc+fOxdq1azF16lTs3bsX//nPf9xUayIiIiLpeH0A7NWrF2JjY62WE0Lgq6++QmhoKN544w29y9544w2Ehobiq6++clU1iYiIyBQhdQXkyesDoK3OnDmDq1evonPnzggJCdG7LCQkBJ07d8b58+eRmpoqUQ2JiIiI3ENWARAAGjRoYPJyzXFNOVMKCwuRnZ2t94+IiIjI28gmAGZlZQEAIiIiTF4eHh6uV86UOXPmICIiQvsvJibG+RUlIiKSEcE+YEnIJgA6w7Rp05CVlaX9x+5iIiIi8kZevwyMrTQtf+Za+DTdueZaCAFApVJBpVI5v3JEREREbiSbFkBrY/ysjREkIiIi5xPsAZaErAJgjRo1kJycjLy8PL3L8vLykJycjLp163Jc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8fvvv1u9jTlz5iAiIkL7LyYmxg01N8QuYCIiIiofhRDCaxLFpEmT9FrgrHnppZfQoEEDi2U2bNiA3r17o3nz5jh8+LDFsqZaAGNiYpCVlYXw8HCb62WLvMJiNJu51uh4ZGgg/pne26n3RURE5C7L9qZiyq+ln7cpc/tLUofs7GxERES45PPbW3hVF/DChQuRl5dnc/nBgwdbDYA9e/ZEvXr1cOTIEWRnZ1t8IqhUKqhUKpvv3zXYBUxERETl41UBMDc31yW3GxkZibNnzyI/P1+23wSIiIhIPmQzBtCcvLw8HDt2DCEhIYiM5BZrRERE5PtkEQBzcnJw+vRpo+N37tzBmDFjkJOTg8cffxz+/l7VIEpEROR1BCczegRZJJ6MjAw0btwYbdu2RZMmTRAdHY309HSsX78ely9fRnx8PD744AOpq6lHwaF+RERE5CKyCICVK1fGuHHjsGfPHqxevRq3b99GcHAwmjRpggkTJmD8+PEIDg6WuppEREREbiGLABgeHo5PPvlE6mo4BVsGiYiIqLxkMQbQl1QI9JO6CkREROTlGAC9TMUKgVJXgYiIiLwcAyARERGRzDAAEhEREckMAyARERG5jb+S0cMTyGIWMBEREXmG/vdVx3e7LqJ9XGWpqyJrDIBeJipMJXUViIiIHBYU4IcVL3SWuhqyx3ZYL/POwOZSV4GIiIi8HAOgFwkO8EO18CCpq0FERERejgHQQylgvOXHule6SVATIiIi8jUMgF6iWrgKMZUrSF0NIiIi8gEMgEREREQywwBIREREJDMMgF5CCKlrQERERL6CAZCIiIhIZhgAiYiIiGSGAZCIiIhIZhgAvYTCeFlAIiIiIocwABIRERHJDAMgERERkcwwABIRERHJDAOgh+KYPyIiInIVBkAiIiIimWEAJCIiIpIZBkAvMalPI6mrQERERD7CX+oKkHU/jGmPTvUipa4GERER+Qi2AHqB6hHBUleBiIiIfAgDIBEREZHMMAASERERyQwDIBEREZHMMAB6Aa4JTURERM7EAOgFhNQVICIiIp/CAEhEREQkMwyARERERDLDAEhEREQkMwyARERERDLDAEhEREQkMwyARERERDLDAOgFuA4gERERORMDIBEREZHMMAASERERyQwDIBEREZHMMAASERERyQwDoBfgXsBERETkTAyAHkrBqb9ERETkIgyA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9evX8corr6B+/fpQqVSIjIzEoEGDcPToUbse78qVK9GzZ09UqlQJQUFBaN68OebNm4eSkhK9cosXL4ZCocDixYuxbt06dOrUCRUqVECVKlUwYsQIZGRkmLz9hQsXolmzZggKCkJMTAymTJmCgoICKBQKJCQkaMspFAps2bJF+7Pmn6kxf2fPnsUjjzyCSpUqISQkBL169cKhQ4fsetxE5HsYAInIYZoAaBjwNm3ahODgYHTo0AFdu3Y1ebnm+rdu3cLLL7+MwsJC9OvXD6+88goSEhKwevVqdOrUSa918dFHH0VISAi+//57k/X57rvvAADDhw/XHjt37hxat26NBQsWoF69enjxxRfRr18/rFmzBh06dMDu3btteqzTpk3DwIEDcerUKTz66KMYN24cgoODMXnyZDz55JMmr/P777/joYceQo0aNTBu3DjUq1cP3377LQYMGGBUdsaMGRg7diwyMjIwZswYPPbYY1i2bBkef/xxo7IzZ85EbGys9mfNv4EDB+qVS0lJQYcOHXDr1i0888wz6N27NzZs2IDExESkp6fb9LiJyEcJIiIHFRcXi4iICBESEiLu3r2rPd68eXORmJgohBDiww8/FABEamqq9vKHHnpIABBbt24VBQUF4vLly0a3ffToUREaGip69eqld3zYsGECgNi9e7dRXapVqyaio6NFcXGx9ninTp2En5+fWLNmjV75U6dOibCwMBEfH693vHv37sLwrXHdunUCgEhKShK5ubna42q1WowdO1YAEL/88ov2+KJFiwQA4e/vL7Zv365Xx4SEBAFA7Ny5U68ufn5+ombNmiI9PV17PDs7WzRt2lQAEN27d7daT40LFy4IAAKAmDt3rt5l06dPFwDEnDlzTF6XiOSBLYBE5DA/Pz9069YNeXl52LNnDwDgxo0bOHbsmLbLsnv37gDKWv004/+Cg4PRvn17qFQq1KxZ0+i2mzVrhsTERGzduhVFRUXa45rWvSVLluiVX7duHdLT0/Hkk0/Cz88PAHDgwAHs2LEDI0aMQFJSkl75hg0bYsyYMThy5IjVruBPPvkEAPDFF18gJCREe1yhUGDu3LlQKBRYunSp0fWGDh2Kzp07652vESNGAIBey+bSpUtRUlKCSZMmISoqSns8LCwM06dPt1g3S+rWrYvJkyfrHXv22WeN7p+I5Mdf6goQkXdLSEjAH3/8gU2bNqFz587YvHkzhBDaANiyZUtERERg06ZNGD58OA4ePIjMzEz06tULgYGBAICDBw/i/fffx/bt25GWlqYX+ADg5s2bqF69OgCgZ8+eqF69On788Ud8+OGH8PcvfRvTBELd7t9du3YBANLT0zFr1iyjup88eVL7f/Pmzc0+xl27diEkJARff/21ycuDg4O1t6WrdevWRsdq1aoFAMjMzNQe04zJ69Kli1F53QBpr5YtW0Kp1P+eb+r+iUh+GACJqFx0J4JMnz4dmzdvRlBQENq3bw8AUCqV6NKli7YF0HD5lx07dmh/7tOnDxo0aIDQ0FAoFAqsWLEChw4dQmFhofb+/Pz8MHToUMyfPx9r165F//79kZubixUrVqBp06Zo1aqVtuytW7cAAKtWrcKqVavMPoa8vDyLj/HWrVsoLi7Gm2++addthIeHGx3TBFbdiSPZ2dkAoNf6p1GtWjWLdbPE1vsnIvlhACSicmnRogUqVaqEHTt24O7du9i0aRM6dOgAlUqlLZOQkIBVq1YhJSVFO2NYExxnz56NwsJCbNu2zagFbNeuXSZnrA4fPhzz58/HkiVL0L9/f/z666/Iz8/Xa/0DygLQxx9/jPHjxzv8GMPDw6FQKHDz5k2Hb8Pa7QOls5U1kzs0OFmDiFyBYwCJqFyUSiW6d++OO3fu4Pfff8eJEyf0liwBysYBrl+/Htu2bUNoaCjatGkDoHSWbuXKlY3CX35+Pvbv32/yPlu0aIH4+HisXLkSOTk5WLJkicnlXzStkDt37izXY2zfvj0yMjJw5syZct2OOS1atAAAJCcnG122Y8cOk9fRjHNkSx4ROYIBkIjKTdOap+kiNQyArVq1QlhYGD766CNkZWWha9eu2q7I2NhY3L59G8eOHdOWLykpwauvvoobN26Yvc/hw4fjzp07+O9//4uNGzeie/fuiImJ0SvTrl07tG/fHkuXLsVPP/1kdBtqtVq7np4lEyZMAAA888wzJtfwS0tLw4kTJ6zejjlPPvkklEol5s+fr9fKmJeXh9mzZ5u8TuXKlQEAqampDt8vEckXu4CJqNw0AfDo0aMICgpChw4d9C738/ND586dsWbNGr3yAPDiiy9i3bp16NKlCx5//HEEBQVh8+bNuHLlChISEowWmdYYOnQoXnvtNbz55ptQq9VG3b8aS5cuRWJiIp588kksWLAArVq1QnBwMC5duoSdO3fixo0bKCgosPj4+vbtizfeeANvv/026tevj759+yI2NhYZGRk4e/Ystm3bhnfeeQdNmjSx9ZTpadSoEV577TW8++67iI+Px+OPPw5/f38sX74c8fHxOHr0qNFkjh49euCXX37BoEGD8MADDyAoKAgtWrTAQw895FAdiEhe2AJIROXWvHlzREZGAoDR+D8NTTcwoB8AH3zwQfzyyy+Ii4vDkiVL8MMPP6Bx48bYs2eP0Xg4XTVr1kSPHj1QVFSEoKAgDB482GS5unXr4sCBA5g+fTpyc3OxaNEiLFy4EAcPHkS3bt1MLt9iyltvvYW///4bXbt2xYYNG/Dhhx/izz//RGFhIWbNmmXU/Wyv2bNn43//+x8qVaqEzz//HMuWLcPgwYPxv//9D4DxhI4xY8ZgypQpuHnzJt577z288cYb+PXXX8tVByKSD4UQQkhdCSIiMm39+vXo3bs3pkyZgvfee0/q6hCRj2ALIBGRB7hx44bRhI7MzExMmzYNAIy2eSMiKg+OASQi8gDff/895s2bhx49eqBGjRq4du0a1qxZg+vXr2PkyJHo2LGj1FUkIh/CAEhE5AE6deqE1q1bY/369bh16xb8/PzQpEkTvPHGGxg3bpzU1SMiH/P/h1Tk7TI4O0QAAAAASUVORK5CYII=",
|
|
819
|
+
"text/html": [
|
|
820
|
+
"\n",
|
|
821
|
+
" <div style=\"display: inline-block;\">\n",
|
|
822
|
+
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|
823
|
+
" Figure\n",
|
|
824
|
+
" </div>\n",
|
|
825
|
+
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABj3UlEQVR4nO3dd3iT5cIG8DvpSEsXo5QySqHsUUH2pmUVQQUFBwgCCspBRAUB8SDgQFDBg0c9ivoJKoqiIqggIBvKlL13oYwWKHTT0jbP90dJmr2a5E3y3r/r4qJ98yR58jbjzjMVQggBIiIiIpINpdQVICIiIiL3YgAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhkGQCIiIiKZYQAkIiIikhl/qSvgzdRqNa5evYqwsDAoFAqpq0NEREQ2EEIgJycHNWrUgFIpz7YwBsByuHr1KmJiYqSuBhERETkgNTUVtWrVkroakmAALIewsDAApU+g8PBwiWtDREREtsjOzkZMTIz2c1yOGADLQdPtGx4ezgBIRETkZeQ8fEueHd9EREREMsYASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREREMsMASERERCQzDIBEREQkqa+3X8Afh65KXQ1Z8Ze6AkRERCRfZ6/n4q0/jwMAHmpRQ+LayAdbAImIiEgyt/PvSl0FWWIAJCIiIskIIXUN5IkBkIiIiEhmGACJiIiIZIYBkIiIiCQj2AcsCQZAIiIikgzjnzQYAImIiIhkhgGQiIiISGYYAImIiEgyHAIoDQZAIiIikozgKEBJMAASERERyQwDIBEREUmHDYCSYAAkIiIiyejmP64J6D4MgEREROQRmP/chwGQiIiIPALzn/swABIREZFk2OonDQZAIiIikozuMjAcA+g+DIBERETkERj/3IcBkIiIiCTDRj9pMAASERGRR2AYdB8GQCIiIpKM3jqA7AR2GwZAIiIi8ghsAXQfBkAiIiKSDGf+SoMBkIiIiEhmGACJiIjII/ScvwU7z2VIXQ1ZYAAkIiIiyeh2AF/JvIMhX+6SrC5ywgBIRERE0uEQQEkwABIRERHJDAMgERERkcwwABIREZFkuPizNBgAiYiISDJcBlAaDIBEREREMsMASERERCQzDIBEREREMsMASERERJJRKKSugTwxABIRERHJDAMgERERkcwwABIREZFkFGAfsBQYAImIiIhkhgGQiIiIpMMGQEkwABIRERHJjNcHwCVLluD5559HmzZtoFKpoFAosHjxYrPls7OzMXHiRMTGxkKlUqFOnTqYPHkycnNz3VdpIiIiIgn5S12B8po+fTouXryIyMhIVK9eHRcvXjRbNi8vD927d8fBgwfRp08fDBkyBAcOHMC8efOwZcsWbN26FUFBQW6sPREREZH7eX0L4FdffYWUlBTcuHEDY8eOtVj2/fffx8GDBzF16lSsXbsWc+fOxdq1azF16lTs3bsX//nPf9xUayIiIiLpeH0A7NWrF2JjY62WE0Lgq6++QmhoKN544w29y9544w2Ehobiq6++clU1iYiIyBQhdQXkyesDoK3OnDmDq1evonPnzggJCdG7LCQkBJ07d8b58+eRmpoqUQ2JiIiI3ENWARAAGjRoYPJyzXFNOVMKCwuRnZ2t94+IiIjI28gmAGZlZQEAIiIiTF4eHh6uV86UOXPmICIiQvsvJibG+RUlIiKSEcE+YEnIJgA6w7Rp05CVlaX9x+5iIiIi8kZevwyMrTQtf+Za+DTdueZaCAFApVJBpVI5v3JEREREbiSbFkBrY/ysjREkIiIi5xPsAZaErAJgjRo1kJycjLy8PL3L8vLykJycjLp163Jc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8fvvv1u9jTlz5iAiIkL7LyYmxg01N8QuYCIiIiofhRDCaxLFpEmT9FrgrHnppZfQoEEDi2U2bNiA3r17o3nz5jh8+LDFsqZaAGNiYpCVlYXw8HCb62WLvMJiNJu51uh4ZGgg/pne26n3RURE5C7L9qZiyq+ln7cpc/tLUofs7GxERES45PPbW3hVF/DChQuRl5dnc/nBgwdbDYA9e/ZEvXr1cOTIEWRnZ1t8IqhUKqhUKpvv3zXYBUxERETl41UBMDc31yW3GxkZibNnzyI/P1+23wSIiIhIPmQzBtCcvLw8HDt2DCEhIYiM5BZrRERE5PtkEQBzcnJw+vRpo+N37tzBmDFjkJOTg8cffxz+/l7VIEpEROR1BCczegRZJJ6MjAw0btwYbdu2RZMmTRAdHY309HSsX78ely9fRnx8PD744AOpq6lHwaF+RERE5CKyCICVK1fGuHHjsGfPHqxevRq3b99GcHAwmjRpggkTJmD8+PEIDg6WuppEREREbiGLABgeHo5PPvlE6mo4BVsGiYiIqLxkMQbQl1QI9JO6CkREROTlGAC9TMUKgVJXgYiIiLwcAyARERGRzDAAEhEREckMAyARERG5jb+S0cMTyGIWMBEREXmG/vdVx3e7LqJ9XGWpqyJrDIBeJipMJXUViIiIHBYU4IcVL3SWuhqyx3ZYL/POwOZSV4GIiIi8HAOgFwkO8EO18CCpq0FERERejgHQQylgvOXHule6SVATIiIi8jUMgF6iWrgKMZUrSF0NIiIi8gEMgEREREQywwBIREREJDMMgF5CCKlrQERERL6CAZCIiIhIZhgAiYiIiGSGAZCIiIhIZhgAvYTCeFlAIiIiIocwABIRERHJDAMgERERkcwwABIRERHJDAOgh+KYPyIiInIVBkAiIiIimWEAJCIiIpIZBkAvMalPI6mrQERERD7CX+oKkHU/jGmPTvUipa4GERER+Qi2AHqB6hHBUleBiIiIfAgDIBEREZHMMAASERERyQwDIBEREZHMMAB6Aa4JTURERM7EAOgFhNQVICIiIp/CAEhEREQkMwyARERERDLDAEhEREQkMwyARERERDLDAEhEREQkMwyARERERDLDAOgFuA4gERERORMDIBEREZHMMAASERERyQwDIBEREZHMMAASERERyQwDoBfgXsBERETkTAyAHkrBqb9ERETkIgyA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9evX8corr6B+/fpQqVSIjIzEoEGDcPToUbse78qVK9GzZ09UqlQJQUFBaN68OebNm4eSkhK9cosXL4ZCocDixYuxbt06dOrUCRUqVECVKlUwYsQIZGRkmLz9hQsXolmzZggKCkJMTAymTJmCgoICKBQKJCQkaMspFAps2bJF+7Pmn6kxf2fPnsUjjzyCSpUqISQkBL169cKhQ4fsetxE5HsYAInIYZoAaBjwNm3ahODgYHTo0AFdu3Y1ebnm+rdu3cLLL7+MwsJC9OvXD6+88goSEhKwevVqdOrUSa918dFHH0VISAi+//57k/X57rvvAADDhw/XHjt37hxat26NBQsWoF69enjxxRfRr18/rFmzBh06dMDu3btteqzTpk3DwIEDcerUKTz66KMYN24cgoODMXnyZDz55JMmr/P777/joYceQo0aNTBu3DjUq1cP3377LQYMGGBUdsaMGRg7diwyMjIwZswYPPbYY1i2bBkef/xxo7IzZ85EbGys9mfNv4EDB+qVS0lJQYcOHXDr1i0888wz6N27NzZs2IDExESkp6fb9LiJyEcJIiIHFRcXi4iICBESEiLu3r2rPd68eXORmJgohBDiww8/FABEamqq9vKHHnpIABBbt24VBQUF4vLly0a3ffToUREaGip69eqld3zYsGECgNi9e7dRXapVqyaio6NFcXGx9ninTp2En5+fWLNmjV75U6dOibCwMBEfH693vHv37sLwrXHdunUCgEhKShK5ubna42q1WowdO1YAEL/88ov2+KJFiwQA4e/vL7Zv365Xx4SEBAFA7Ny5U68ufn5+ombNmiI9PV17PDs7WzRt2lQAEN27d7daT40LFy4IAAKAmDt3rt5l06dPFwDEnDlzTF6XiOSBLYBE5DA/Pz9069YNeXl52LNnDwDgxo0bOHbsmLbLsnv37gDKWv004/+Cg4PRvn17qFQq1KxZ0+i2mzVrhsTERGzduhVFRUXa45rWvSVLluiVX7duHdLT0/Hkk0/Cz88PAHDgwAHs2LEDI0aMQFJSkl75hg0bYsyYMThy5IjVruBPPvkEAPDFF18gJCREe1yhUGDu3LlQKBRYunSp0fWGDh2Kzp07652vESNGAIBey+bSpUtRUlKCSZMmISoqSns8LCwM06dPt1g3S+rWrYvJkyfrHXv22WeN7p+I5Mdf6goQkXdLSEjAH3/8gU2bNqFz587YvHkzhBDaANiyZUtERERg06ZNGD58OA4ePIjMzEz06tULgYGBAICDBw/i/fffx/bt25GWlqYX+ADg5s2bqF69OgCgZ8+eqF69On788Ud8+OGH8PcvfRvTBELd7t9du3YBANLT0zFr1iyjup88eVL7f/Pmzc0+xl27diEkJARff/21ycuDg4O1t6WrdevWRsdq1aoFAMjMzNQe04zJ69Kli1F53QBpr5YtW0Kp1P+eb+r+iUh+GACJqFx0J4JMnz4dmzdvRlBQENq3bw8AUCqV6NKli7YF0HD5lx07dmh/7tOnDxo0aIDQ0FAoFAqsWLEChw4dQmFhofb+/Pz8MHToUMyfPx9r165F//79kZubixUrVqBp06Zo1aqVtuytW7cAAKtWrcKqVavMPoa8vDyLj/HWrVsoLi7Gm2++addthIeHGx3TBFbdiSPZ2dkAoNf6p1GtWjWLdbPE1vsnIvlhACSicmnRogUqVaqEHTt24O7du9i0aRM6dOgAlUqlLZOQkIBVq1YhJSVFO2NYExxnz56NwsJCbNu2zagFbNeuXSZnrA4fPhzz58/HkiVL0L9/f/z666/Iz8/Xa/0DygLQxx9/jPHjxzv8GMPDw6FQKHDz5k2Hb8Pa7QOls5U1kzs0OFmDiFyBYwCJqFyUSiW6d++OO3fu4Pfff8eJEyf0liwBysYBrl+/Htu2bUNoaCjatGkDoHSWbuXKlY3CX35+Pvbv32/yPlu0aIH4+HisXLkSOTk5WLJkicnlXzStkDt37izXY2zfvj0yMjJw5syZct2OOS1atAAAJCcnG122Y8cOk9fRjHNkSx4ROYIBkIjKTdOap+kiNQyArVq1QlhYGD766CNkZWWha9eu2q7I2NhY3L59G8eOHdOWLykpwauvvoobN26Yvc/hw4fjzp07+O9//4uNGzeie/fuiImJ0SvTrl07tG/fHkuXLsVPP/1kdBtqtVq7np4lEyZMAAA888wzJtfwS0tLw4kTJ6zejjlPPvkklEol5s+fr9fKmJeXh9mzZ5u8TuXKlQEAqampDt8vEckXu4CJqNw0AfDo0aMICgpChw4d9C738/ND586dsWbNGr3yAPDiiy9i3bp16NKlCx5//HEEBQVh8+bNuHLlChISEowWmdYYOnQoXnvtNbz55ptQq9VG3b8aS5cuRWJiIp588kksWLAArVq1QnBwMC5duoSdO3fixo0bKCgosPj4+vbtizfeeANvv/026tevj759+yI2NhYZGRk4e/Ystm3bhnfeeQdNmjSx9ZTpadSoEV577TW8++67iI+Px+OPPw5/f38sX74c8fHxOHr0qNFkjh49euCXX37BoEGD8MADDyAoKAgtWrTAQw895FAdiEhe2AJIROXWvHlzREZGAoDR+D8NTTcwoB8AH3zwQfzyyy+Ii4vDkiVL8MMPP6Bx48bYs2eP0Xg4XTVr1kSPHj1QVFSEoKAgDB482GS5unXr4sCBA5g+fTpyc3OxaNEiLFy4EAcPHkS3bt1MLt9iyltvvYW///4bXbt2xYYNG/Dhhx/izz//RGFhIWbNmmXU/Wyv2bNn43//+x8qVaqEzz//HMuWLcPgwYPxv//9D4DxhI4xY8ZgypQpuHnzJt577z288cYb+PXXX8tVByKSD4UQQkhdCSIiMm39+vXo3bs3pkyZgvfee0/q6hCRj2ALIBGRB7hx44bRhI7MzExMmzYNAIy2eSMiKg+OASQi8gDff/895s2bhx49eqBGjRq4du0a1qxZg+vXr2PkyJHo2LGj1FUkIh/CAEhE5AE6deqE1q1bY/369bh16xb8/PzQpEkTvPHGGxg3bpzU1SMiH/P/h1Tk7TI4O0QAAAAASUVORK5CYII=' width=640.0/>\n",
|
|
826
|
+
" </div>\n",
|
|
827
|
+
" "
|
|
828
|
+
],
|
|
829
|
+
"text/plain": [
|
|
830
|
+
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|
831
|
+
]
|
|
832
|
+
},
|
|
833
|
+
"metadata": {},
|
|
834
|
+
"output_type": "display_data"
|
|
835
|
+
}
|
|
836
|
+
],
|
|
837
|
+
"source": [
|
|
838
|
+
"modeldf = pd.DataFrame(data=ar_dict['flux'],columns=grid)\n",
|
|
839
|
+
"modeldf.transpose().plot(xlabel='Wavelength', ylabel='Flux', legend=False)"
|
|
840
|
+
]
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
"cell_type": "markdown",
|
|
844
|
+
"metadata": {},
|
|
845
|
+
"source": [
|
|
846
|
+
"# Authorization\n",
|
|
847
|
+
"Your access to data is affected by how you login (or don't). Both `client.find` and `client.retrieve` allow you to request data (possibly implictly) from specific Datasets. Its possible for your combination of LOGIN and FIND (or RETIEVE) to work now, but fail later without you changing anything. For instance, if you don't login and ask for data from ALL Datasets at a time when all Datasets are public, your FIND will succeed. But if NOIRLab adds a new Dataset that is private, your same find will fail. To avoid the failure, you would have to explicitly request only the public Datasets, or to login as a user that is authorized to access the private Dataset.\n",
|
|
848
|
+
"\n",
|
|
849
|
+
"So summarize, there are three cases in which your FIND or RETRIEVE will be authorized:\n",
|
|
850
|
+
"1. All Datasets are Public (does not matter what you login status is)\n",
|
|
851
|
+
"2. You have explicitly requested only Public Datasets (does not matter what you login status is)\n",
|
|
852
|
+
"3. You are logged in and are authorized to access all the Private Datasets you have (explicitly or implicitly) requested.\n",
|
|
853
|
+
"\n",
|
|
854
|
+
"You might be authorized to access one Dataset, but not another. So, you must be careful in case #3 above to explictly request the correct Private Dataset(s)."
|
|
855
|
+
]
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"cell_type": "markdown",
|
|
859
|
+
"metadata": {},
|
|
860
|
+
"source": [
|
|
861
|
+
"## Logging in and logging out"
|
|
862
|
+
]
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"cell_type": "code",
|
|
866
|
+
"execution_count": 24,
|
|
867
|
+
"metadata": {},
|
|
868
|
+
"outputs": [],
|
|
869
|
+
"source": [
|
|
870
|
+
"if show_help:\n",
|
|
871
|
+
" client.login?\n",
|
|
872
|
+
" client.logout?"
|
|
873
|
+
]
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
"cell_type": "code",
|
|
877
|
+
"execution_count": 25,
|
|
878
|
+
"metadata": {},
|
|
879
|
+
"outputs": [
|
|
880
|
+
{
|
|
881
|
+
"name": "stdout",
|
|
882
|
+
"output_type": "stream",
|
|
883
|
+
"text": [
|
|
884
|
+
"Logged in successfully with email='test_user_1@noirlab.edu'\n"
|
|
885
|
+
]
|
|
886
|
+
}
|
|
887
|
+
],
|
|
888
|
+
"source": [
|
|
889
|
+
"client.login(auth_user, usrpw)"
|
|
890
|
+
]
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"cell_type": "code",
|
|
894
|
+
"execution_count": 26,
|
|
895
|
+
"metadata": {
|
|
896
|
+
"scrolled": true
|
|
897
|
+
},
|
|
898
|
+
"outputs": [
|
|
899
|
+
{
|
|
900
|
+
"name": "stdout",
|
|
901
|
+
"output_type": "stream",
|
|
902
|
+
"text": [
|
|
903
|
+
"auth_status={'Authorized_DataReleases': ['SDSS-DR17'], 'All_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'SDSS-DR17', 'DESI-EDR'], 'All_Private_DataReleases': ['SDSS-DR17']}\n"
|
|
904
|
+
]
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"data": {
|
|
908
|
+
"text/plain": [
|
|
909
|
+
"{'Loggedin_As': 'test_user_1@noirlab.edu',\n",
|
|
910
|
+
" 'Authorized_Datasets': {'SDSS-DR17'},\n",
|
|
911
|
+
" 'Unauthorized_Datasets': set(),\n",
|
|
912
|
+
" 'All_Private_Datasets': {'SDSS-DR17'},\n",
|
|
913
|
+
" 'All_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
|
|
914
|
+
]
|
|
915
|
+
},
|
|
916
|
+
"execution_count": 26,
|
|
917
|
+
"metadata": {},
|
|
918
|
+
"output_type": "execute_result"
|
|
919
|
+
}
|
|
920
|
+
],
|
|
921
|
+
"source": [
|
|
922
|
+
"client.authorized"
|
|
923
|
+
]
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"cell_type": "code",
|
|
927
|
+
"execution_count": 27,
|
|
928
|
+
"metadata": {},
|
|
929
|
+
"outputs": [
|
|
930
|
+
{
|
|
931
|
+
"name": "stdout",
|
|
932
|
+
"output_type": "stream",
|
|
933
|
+
"text": [
|
|
934
|
+
"Logged-out successfully. Previously logged-in with email test_user_1@noirlab.edu.\n"
|
|
935
|
+
]
|
|
936
|
+
}
|
|
937
|
+
],
|
|
938
|
+
"source": [
|
|
939
|
+
"client.logout() # can also be done with client.login(None)"
|
|
940
|
+
]
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"cell_type": "code",
|
|
944
|
+
"execution_count": 28,
|
|
945
|
+
"metadata": {},
|
|
946
|
+
"outputs": [
|
|
947
|
+
{
|
|
948
|
+
"name": "stdout",
|
|
949
|
+
"output_type": "stream",
|
|
950
|
+
"text": [
|
|
951
|
+
"auth_status={'Authorized_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'DESI-EDR'], 'All_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'SDSS-DR17', 'DESI-EDR'], 'All_Private_DataReleases': ['SDSS-DR17']}\n"
|
|
952
|
+
]
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
"data": {
|
|
956
|
+
"text/plain": [
|
|
957
|
+
"{'Loggedin_As': 'Anonymous',\n",
|
|
958
|
+
" 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'},\n",
|
|
959
|
+
" 'Unauthorized_Datasets': {'SDSS-DR17'},\n",
|
|
960
|
+
" 'All_Private_Datasets': {'SDSS-DR17'},\n",
|
|
961
|
+
" 'All_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
|
|
962
|
+
]
|
|
963
|
+
},
|
|
964
|
+
"execution_count": 28,
|
|
965
|
+
"metadata": {},
|
|
966
|
+
"output_type": "execute_result"
|
|
967
|
+
}
|
|
968
|
+
],
|
|
969
|
+
"source": [
|
|
970
|
+
"client.authorized"
|
|
971
|
+
]
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
"cell_type": "markdown",
|
|
975
|
+
"metadata": {},
|
|
976
|
+
"source": [
|
|
977
|
+
"## FIND"
|
|
978
|
+
]
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"cell_type": "markdown",
|
|
982
|
+
"metadata": {},
|
|
983
|
+
"source": [
|
|
984
|
+
"### Pass FIND with Public DRs as Anonymous"
|
|
985
|
+
]
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
"cell_type": "code",
|
|
989
|
+
"execution_count": 29,
|
|
990
|
+
"metadata": {},
|
|
991
|
+
"outputs": [
|
|
992
|
+
{
|
|
993
|
+
"name": "stdout",
|
|
994
|
+
"output_type": "stream",
|
|
995
|
+
"text": [
|
|
996
|
+
"Logged-out successfully. Previously logged-in with email None.\n"
|
|
997
|
+
]
|
|
998
|
+
}
|
|
999
|
+
],
|
|
1000
|
+
"source": [
|
|
1001
|
+
"client.logout()"
|
|
1002
|
+
]
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"cell_type": "code",
|
|
1006
|
+
"execution_count": 30,
|
|
1007
|
+
"metadata": {},
|
|
1008
|
+
"outputs": [
|
|
1009
|
+
{
|
|
1010
|
+
"name": "stdout",
|
|
1011
|
+
"output_type": "stream",
|
|
1012
|
+
"text": [
|
|
1013
|
+
"{'META': {'endpoint': 'sparc/find'},\n",
|
|
1014
|
+
" 'PARAMETERS': {'limit': 2,\n",
|
|
1015
|
+
" 'include': 'dec,ra,sparcl_id,specid',\n",
|
|
1016
|
+
" 'offset': 0,\n",
|
|
1017
|
+
" 'format': 'json',\n",
|
|
1018
|
+
" 'drs': ['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'],\n",
|
|
1019
|
+
" 'private_drs': ['SDSS-DR17'],\n",
|
|
1020
|
+
" 'json_payload': {'outfields': ['sparcl_id',\n",
|
|
1021
|
+
" 'specid',\n",
|
|
1022
|
+
" 'ra',\n",
|
|
1023
|
+
" 'dec',\n",
|
|
1024
|
+
" 'redshift',\n",
|
|
1025
|
+
" 'spectype',\n",
|
|
1026
|
+
" 'data_release',\n",
|
|
1027
|
+
" 'redshift_err'],\n",
|
|
1028
|
+
" 'search': [['spectype', 'GALAXY'],\n",
|
|
1029
|
+
" ['redshift', 0.5, 0.9],\n",
|
|
1030
|
+
" ['data_release',\n",
|
|
1031
|
+
" 'BOSS-DR16',\n",
|
|
1032
|
+
" 'SDSS-DR16']]}},\n",
|
|
1033
|
+
" 'HEADER': {'dec': 'np.float64',\n",
|
|
1034
|
+
" 'sparcl_id': 'str',\n",
|
|
1035
|
+
" 'redshift_err': 'np.float64',\n",
|
|
1036
|
+
" 'data_release': 'category',\n",
|
|
1037
|
+
" 'specid': 'np.int64',\n",
|
|
1038
|
+
" 'redshift': 'np.float64',\n",
|
|
1039
|
+
" 'spectype': 'category',\n",
|
|
1040
|
+
" 'ra': 'np.float64'},\n",
|
|
1041
|
+
" 'WARNINGS': ['OFFSET parameter needs SORT but it was not provided. Using '\n",
|
|
1042
|
+
" \"default 'sparcl_id' for sorting\"]}\n",
|
|
1043
|
+
"{'dec': 28.063643, 'sparcl_id': 'bb3d4287-8a2f-479f-9c7f-1053051e4925', 'redshift_err': 0.000331654009642079, 'data_release': 'BOSS-DR16', 'specid': -6444532452352045056, 'redshift': 0.761636912822723, 'spectype': 'GALAXY', 'ra': 132.14379, '_dr': 'BOSS-DR16'}\n",
|
|
1044
|
+
"\n",
|
|
1045
|
+
"SUCCESS: found.count=1 records from FIND\n"
|
|
1046
|
+
]
|
|
1047
|
+
}
|
|
1048
|
+
],
|
|
1049
|
+
"source": [
|
|
1050
|
+
"out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
|
|
1051
|
+
"cons = {'spectype': ['GALAXY'],\n",
|
|
1052
|
+
" 'redshift': [0.5, 0.9],\n",
|
|
1053
|
+
" 'data_release': ['BOSS-DR16', 'SDSS-DR16']}\n",
|
|
1054
|
+
"found = client.find(outfields=out, constraints=cons, limit=2)\n",
|
|
1055
|
+
"pp(found.info)\n",
|
|
1056
|
+
"print(found.records[0])\n",
|
|
1057
|
+
"print(f'\\nSUCCESS: {found.count=} records from FIND')"
|
|
1058
|
+
]
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"cell_type": "markdown",
|
|
1062
|
+
"metadata": {},
|
|
1063
|
+
"source": [
|
|
1064
|
+
"### Fail FIND with prviate DR as Anonymous"
|
|
1065
|
+
]
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
"cell_type": "code",
|
|
1069
|
+
"execution_count": 31,
|
|
1070
|
+
"metadata": {},
|
|
1071
|
+
"outputs": [
|
|
1072
|
+
{
|
|
1073
|
+
"name": "stdout",
|
|
1074
|
+
"output_type": "stream",
|
|
1075
|
+
"text": [
|
|
1076
|
+
"auth_status={'Authorized_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'DESI-EDR'], 'All_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'SDSS-DR17', 'DESI-EDR'], 'All_Private_DataReleases': ['SDSS-DR17']}\n"
|
|
1077
|
+
]
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
"data": {
|
|
1081
|
+
"text/plain": [
|
|
1082
|
+
"{'Loggedin_As': 'Anonymous',\n",
|
|
1083
|
+
" 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'},\n",
|
|
1084
|
+
" 'Unauthorized_Datasets': {'SDSS-DR17'},\n",
|
|
1085
|
+
" 'All_Private_Datasets': {'SDSS-DR17'},\n",
|
|
1086
|
+
" 'All_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
|
|
1087
|
+
]
|
|
1088
|
+
},
|
|
1089
|
+
"execution_count": 31,
|
|
1090
|
+
"metadata": {},
|
|
1091
|
+
"output_type": "execute_result"
|
|
1092
|
+
}
|
|
1093
|
+
],
|
|
1094
|
+
"source": [
|
|
1095
|
+
"client.authorized"
|
|
1096
|
+
]
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
"cell_type": "code",
|
|
1100
|
+
"execution_count": 32,
|
|
1101
|
+
"metadata": {},
|
|
1102
|
+
"outputs": [
|
|
1103
|
+
{
|
|
1104
|
+
"name": "stdout",
|
|
1105
|
+
"output_type": "stream",
|
|
1106
|
+
"text": [
|
|
1107
|
+
"SUCCESS: Could not execute find: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. requested_private_drs={'SDSS-DR17'} my_auth=set() [NODRACCESS] None\n"
|
|
1108
|
+
]
|
|
1109
|
+
}
|
|
1110
|
+
],
|
|
1111
|
+
"source": [
|
|
1112
|
+
"out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
|
|
1113
|
+
"cons = {'spectype': ['GALAXY'],\n",
|
|
1114
|
+
" 'redshift': [0.5, 0.9],\n",
|
|
1115
|
+
" 'data_release': ['BOSS-DR16',priv_dr]}\n",
|
|
1116
|
+
"try:\n",
|
|
1117
|
+
" found = client.find(outfields=out, constraints=cons, limit=2)\n",
|
|
1118
|
+
" print('FOUND info:')\n",
|
|
1119
|
+
" pp(found.info)\n",
|
|
1120
|
+
" print(f'\\nFOUND records. {found.records[0]=}')\n",
|
|
1121
|
+
" gotrecord = True\n",
|
|
1122
|
+
"except Exception as err:\n",
|
|
1123
|
+
" gotrecord = False\n",
|
|
1124
|
+
" print(f'SUCCESS: Could not execute find: {err}')\n",
|
|
1125
|
+
"\n",
|
|
1126
|
+
"if gotrecord:\n",
|
|
1127
|
+
" raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
|
|
1128
|
+
]
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
"cell_type": "markdown",
|
|
1132
|
+
"metadata": {},
|
|
1133
|
+
"source": [
|
|
1134
|
+
"### Fail FIND with prviate DR as Unauthorized"
|
|
1135
|
+
]
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
"cell_type": "code",
|
|
1139
|
+
"execution_count": 33,
|
|
1140
|
+
"metadata": {},
|
|
1141
|
+
"outputs": [
|
|
1142
|
+
{
|
|
1143
|
+
"name": "stdout",
|
|
1144
|
+
"output_type": "stream",
|
|
1145
|
+
"text": [
|
|
1146
|
+
"Logged in successfully with email='test_user_2@noirlab.edu'\n"
|
|
1147
|
+
]
|
|
1148
|
+
}
|
|
1149
|
+
],
|
|
1150
|
+
"source": [
|
|
1151
|
+
"client.login(unauth_user, usrpw)"
|
|
1152
|
+
]
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"cell_type": "code",
|
|
1156
|
+
"execution_count": 34,
|
|
1157
|
+
"metadata": {},
|
|
1158
|
+
"outputs": [
|
|
1159
|
+
{
|
|
1160
|
+
"name": "stdout",
|
|
1161
|
+
"output_type": "stream",
|
|
1162
|
+
"text": [
|
|
1163
|
+
"SUCCESS: Could not execute find: [UNKNOWN] uname='test_user_2@noirlab.edu' is declined access to datasets: SDSS-DR17. requested_private_drs={'SDSS-DR17'} my_auth=set() [NODRACCESS] None\n"
|
|
1164
|
+
]
|
|
1165
|
+
}
|
|
1166
|
+
],
|
|
1167
|
+
"source": [
|
|
1168
|
+
"try:\n",
|
|
1169
|
+
" found = client.find(outfields=out, constraints=cons, limit=2)\n",
|
|
1170
|
+
" print('FOUND info:')\n",
|
|
1171
|
+
" pp(found.info)\n",
|
|
1172
|
+
" print(f'\\nFOUND records. {found.records[0]=}')\n",
|
|
1173
|
+
" gotrecord = True\n",
|
|
1174
|
+
"except Exception as err:\n",
|
|
1175
|
+
" gotrecord = False\n",
|
|
1176
|
+
" print(f'SUCCESS: Could not execute find: {err}')\n",
|
|
1177
|
+
"\n",
|
|
1178
|
+
"if gotrecord:\n",
|
|
1179
|
+
" raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
|
|
1180
|
+
]
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"cell_type": "markdown",
|
|
1184
|
+
"metadata": {},
|
|
1185
|
+
"source": [
|
|
1186
|
+
"### Pass FIND with prviate DR as Authorized"
|
|
1187
|
+
]
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
"cell_type": "code",
|
|
1191
|
+
"execution_count": 35,
|
|
1192
|
+
"metadata": {},
|
|
1193
|
+
"outputs": [
|
|
1194
|
+
{
|
|
1195
|
+
"name": "stdout",
|
|
1196
|
+
"output_type": "stream",
|
|
1197
|
+
"text": [
|
|
1198
|
+
"Logged in successfully with email='test_user_1@noirlab.edu'\n"
|
|
1199
|
+
]
|
|
1200
|
+
}
|
|
1201
|
+
],
|
|
1202
|
+
"source": [
|
|
1203
|
+
"client.login(auth_user, usrpw)"
|
|
1204
|
+
]
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
"cell_type": "code",
|
|
1208
|
+
"execution_count": 36,
|
|
1209
|
+
"metadata": {},
|
|
1210
|
+
"outputs": [
|
|
1211
|
+
{
|
|
1212
|
+
"name": "stdout",
|
|
1213
|
+
"output_type": "stream",
|
|
1214
|
+
"text": [
|
|
1215
|
+
"FOUND info:\n",
|
|
1216
|
+
"{'META': {'endpoint': 'sparc/find'},\n",
|
|
1217
|
+
" 'PARAMETERS': {'limit': 2,\n",
|
|
1218
|
+
" 'include': 'dec,ra,sparcl_id,specid',\n",
|
|
1219
|
+
" 'offset': 0,\n",
|
|
1220
|
+
" 'format': 'json',\n",
|
|
1221
|
+
" 'drs': ['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'],\n",
|
|
1222
|
+
" 'private_drs': ['SDSS-DR17'],\n",
|
|
1223
|
+
" 'json_payload': {'outfields': ['sparcl_id',\n",
|
|
1224
|
+
" 'specid',\n",
|
|
1225
|
+
" 'ra',\n",
|
|
1226
|
+
" 'dec',\n",
|
|
1227
|
+
" 'redshift',\n",
|
|
1228
|
+
" 'spectype',\n",
|
|
1229
|
+
" 'data_release',\n",
|
|
1230
|
+
" 'redshift_err'],\n",
|
|
1231
|
+
" 'search': [['spectype', 'GALAXY'],\n",
|
|
1232
|
+
" ['redshift', 0.5, 0.9],\n",
|
|
1233
|
+
" ['data_release',\n",
|
|
1234
|
+
" 'BOSS-DR16',\n",
|
|
1235
|
+
" 'SDSS-DR17']]}},\n",
|
|
1236
|
+
" 'HEADER': {'dec': 'np.float64',\n",
|
|
1237
|
+
" 'sparcl_id': 'str',\n",
|
|
1238
|
+
" 'redshift_err': 'np.float64',\n",
|
|
1239
|
+
" 'data_release': 'category',\n",
|
|
1240
|
+
" 'specid': 'np.int64',\n",
|
|
1241
|
+
" 'redshift': 'np.float64',\n",
|
|
1242
|
+
" 'spectype': 'category',\n",
|
|
1243
|
+
" 'ra': 'np.float64'},\n",
|
|
1244
|
+
" 'WARNINGS': ['OFFSET parameter needs SORT but it was not provided. Using '\n",
|
|
1245
|
+
" \"default 'sparcl_id' for sorting\"]}\n"
|
|
1246
|
+
]
|
|
1247
|
+
}
|
|
1248
|
+
],
|
|
1249
|
+
"source": [
|
|
1250
|
+
"found = client.find(outfields=out, constraints=cons, limit=2)\n",
|
|
1251
|
+
"print('FOUND info:')\n",
|
|
1252
|
+
"pp(found.info)"
|
|
1253
|
+
]
|
|
1254
|
+
},
|
|
1255
|
+
{
|
|
1256
|
+
"cell_type": "markdown",
|
|
1257
|
+
"metadata": {},
|
|
1258
|
+
"source": [
|
|
1259
|
+
"### Fail FIND with Unknown user\n",
|
|
1260
|
+
"User is authenticated with SSO, but is unknown to SPARCL"
|
|
1261
|
+
]
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"cell_type": "code",
|
|
1265
|
+
"execution_count": 37,
|
|
1266
|
+
"metadata": {},
|
|
1267
|
+
"outputs": [
|
|
1268
|
+
{
|
|
1269
|
+
"name": "stdout",
|
|
1270
|
+
"output_type": "stream",
|
|
1271
|
+
"text": [
|
|
1272
|
+
"Logged in successfully with email='test_user_3@noirlab.edu'\n"
|
|
1273
|
+
]
|
|
1274
|
+
}
|
|
1275
|
+
],
|
|
1276
|
+
"source": [
|
|
1277
|
+
"client.login(non_user, usrpw)"
|
|
1278
|
+
]
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
"cell_type": "code",
|
|
1282
|
+
"execution_count": 38,
|
|
1283
|
+
"metadata": {},
|
|
1284
|
+
"outputs": [
|
|
1285
|
+
{
|
|
1286
|
+
"name": "stdout",
|
|
1287
|
+
"output_type": "stream",
|
|
1288
|
+
"text": [
|
|
1289
|
+
"SUCCESS: Could not execute find: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. requested_private_drs={'SDSS-DR17'} my_auth=set() [NODRACCESS] None\n"
|
|
1290
|
+
]
|
|
1291
|
+
}
|
|
1292
|
+
],
|
|
1293
|
+
"source": [
|
|
1294
|
+
"try:\n",
|
|
1295
|
+
" found = client.find(outfields=out, constraints=cons, limit=2)\n",
|
|
1296
|
+
" print('FOUND info:')\n",
|
|
1297
|
+
" pp(found.info)\n",
|
|
1298
|
+
" print(f'\\nFOUND records. {found.records[0]=}')\n",
|
|
1299
|
+
" gotrecord = True\n",
|
|
1300
|
+
"except Exception as err:\n",
|
|
1301
|
+
" gotrecord = False\n",
|
|
1302
|
+
" print(f'SUCCESS: Could not execute find: {err}')\n",
|
|
1303
|
+
"\n",
|
|
1304
|
+
"if gotrecord:\n",
|
|
1305
|
+
" raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
|
|
1306
|
+
]
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
"cell_type": "markdown",
|
|
1310
|
+
"metadata": {},
|
|
1311
|
+
"source": [
|
|
1312
|
+
"## RETRIEVE"
|
|
1313
|
+
]
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"cell_type": "markdown",
|
|
1317
|
+
"metadata": {},
|
|
1318
|
+
"source": [
|
|
1319
|
+
"### Pass RETRIEVE with public DRs as Anonymous"
|
|
1320
|
+
]
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"cell_type": "code",
|
|
1324
|
+
"execution_count": 39,
|
|
1325
|
+
"metadata": {},
|
|
1326
|
+
"outputs": [
|
|
1327
|
+
{
|
|
1328
|
+
"name": "stdout",
|
|
1329
|
+
"output_type": "stream",
|
|
1330
|
+
"text": [
|
|
1331
|
+
"auth_status={'Authorized_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'DESI-EDR'], 'All_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'SDSS-DR17', 'DESI-EDR'], 'All_Private_DataReleases': ['SDSS-DR17']}\n"
|
|
1332
|
+
]
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"data": {
|
|
1336
|
+
"text/plain": [
|
|
1337
|
+
"{'Loggedin_As': 'test_user_3@noirlab.edu',\n",
|
|
1338
|
+
" 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'},\n",
|
|
1339
|
+
" 'Unauthorized_Datasets': {'SDSS-DR17'},\n",
|
|
1340
|
+
" 'All_Private_Datasets': {'SDSS-DR17'},\n",
|
|
1341
|
+
" 'All_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
|
|
1342
|
+
]
|
|
1343
|
+
},
|
|
1344
|
+
"execution_count": 39,
|
|
1345
|
+
"metadata": {},
|
|
1346
|
+
"output_type": "execute_result"
|
|
1347
|
+
}
|
|
1348
|
+
],
|
|
1349
|
+
"source": [
|
|
1350
|
+
"client.authorized"
|
|
1351
|
+
]
|
|
1352
|
+
},
|
|
1353
|
+
{
|
|
1354
|
+
"cell_type": "code",
|
|
1355
|
+
"execution_count": 40,
|
|
1356
|
+
"metadata": {},
|
|
1357
|
+
"outputs": [
|
|
1358
|
+
{
|
|
1359
|
+
"name": "stdout",
|
|
1360
|
+
"output_type": "stream",
|
|
1361
|
+
"text": [
|
|
1362
|
+
"got.records[0].spectype='GALAXY' len(got.records[0].flux)=4621\n"
|
|
1363
|
+
]
|
|
1364
|
+
}
|
|
1365
|
+
],
|
|
1366
|
+
"source": [
|
|
1367
|
+
"inc = ['specid', 'data_release', 'redshift', 'flux', 'spectype']\n",
|
|
1368
|
+
"got = client.retrieve(uuid_list=found.ids,\n",
|
|
1369
|
+
" include=inc,\n",
|
|
1370
|
+
" dataset_list=['SDSS-DR16','BOSS-DR16'])\n",
|
|
1371
|
+
"print(f'{got.records[0].spectype=} {len(got.records[0].flux)=}')"
|
|
1372
|
+
]
|
|
1373
|
+
},
|
|
1374
|
+
{
|
|
1375
|
+
"cell_type": "markdown",
|
|
1376
|
+
"metadata": {},
|
|
1377
|
+
"source": [
|
|
1378
|
+
"### Fail RETRIEVE with private DR as Anonymous"
|
|
1379
|
+
]
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"cell_type": "code",
|
|
1383
|
+
"execution_count": 41,
|
|
1384
|
+
"metadata": {},
|
|
1385
|
+
"outputs": [
|
|
1386
|
+
{
|
|
1387
|
+
"name": "stdout",
|
|
1388
|
+
"output_type": "stream",
|
|
1389
|
+
"text": [
|
|
1390
|
+
"Correctly could not retrieve: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. requested_private_drs={'SDSS-DR17'} my_auth=set() [NODRACCESS] None\n"
|
|
1391
|
+
]
|
|
1392
|
+
}
|
|
1393
|
+
],
|
|
1394
|
+
"source": [
|
|
1395
|
+
"try:\n",
|
|
1396
|
+
" got = client.retrieve(uuid_list=found.ids,\n",
|
|
1397
|
+
" include=inc,\n",
|
|
1398
|
+
" dataset_list=['SDSS-DR16',priv_dr,'BOSS-DR16'])\n",
|
|
1399
|
+
" gotrecord = True\n",
|
|
1400
|
+
"except Exception as err:\n",
|
|
1401
|
+
" gotrecord = False\n",
|
|
1402
|
+
" print(f'Correctly could not retrieve: {err}')\n",
|
|
1403
|
+
"\n",
|
|
1404
|
+
"if gotrecord:\n",
|
|
1405
|
+
" raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
|
|
1406
|
+
]
|
|
1407
|
+
},
|
|
1408
|
+
{
|
|
1409
|
+
"cell_type": "markdown",
|
|
1410
|
+
"metadata": {},
|
|
1411
|
+
"source": [
|
|
1412
|
+
"### Pass RETRIEVE with private DRs as Authorized"
|
|
1413
|
+
]
|
|
1414
|
+
},
|
|
1415
|
+
{
|
|
1416
|
+
"cell_type": "code",
|
|
1417
|
+
"execution_count": 42,
|
|
1418
|
+
"metadata": {},
|
|
1419
|
+
"outputs": [
|
|
1420
|
+
{
|
|
1421
|
+
"name": "stdout",
|
|
1422
|
+
"output_type": "stream",
|
|
1423
|
+
"text": [
|
|
1424
|
+
"Logged in successfully with email='test_user_1@noirlab.edu'\n"
|
|
1425
|
+
]
|
|
1426
|
+
}
|
|
1427
|
+
],
|
|
1428
|
+
"source": [
|
|
1429
|
+
"client.login(auth_user, usrpw)"
|
|
1430
|
+
]
|
|
1431
|
+
},
|
|
1432
|
+
{
|
|
1433
|
+
"cell_type": "code",
|
|
1434
|
+
"execution_count": 43,
|
|
1435
|
+
"metadata": {},
|
|
1436
|
+
"outputs": [
|
|
1437
|
+
{
|
|
1438
|
+
"name": "stdout",
|
|
1439
|
+
"output_type": "stream",
|
|
1440
|
+
"text": [
|
|
1441
|
+
"auth_status={'Authorized_DataReleases': ['SDSS-DR17'], 'All_DataReleases': ['BOSS-DR16', 'SDSS-DR16', 'SDSS-DR17', 'DESI-EDR'], 'All_Private_DataReleases': ['SDSS-DR17']}\n"
|
|
1442
|
+
]
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
"data": {
|
|
1446
|
+
"text/plain": [
|
|
1447
|
+
"{'Loggedin_As': 'test_user_1@noirlab.edu',\n",
|
|
1448
|
+
" 'Authorized_Datasets': {'SDSS-DR17'},\n",
|
|
1449
|
+
" 'Unauthorized_Datasets': set(),\n",
|
|
1450
|
+
" 'All_Private_Datasets': {'SDSS-DR17'},\n",
|
|
1451
|
+
" 'All_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
|
|
1452
|
+
]
|
|
1453
|
+
},
|
|
1454
|
+
"execution_count": 43,
|
|
1455
|
+
"metadata": {},
|
|
1456
|
+
"output_type": "execute_result"
|
|
1457
|
+
}
|
|
1458
|
+
],
|
|
1459
|
+
"source": [
|
|
1460
|
+
"client.authorized"
|
|
1461
|
+
]
|
|
1462
|
+
},
|
|
1463
|
+
{
|
|
1464
|
+
"cell_type": "code",
|
|
1465
|
+
"execution_count": 44,
|
|
1466
|
+
"metadata": {},
|
|
1467
|
+
"outputs": [
|
|
1468
|
+
{
|
|
1469
|
+
"name": "stdout",
|
|
1470
|
+
"output_type": "stream",
|
|
1471
|
+
"text": [
|
|
1472
|
+
"got.count=1\n"
|
|
1473
|
+
]
|
|
1474
|
+
}
|
|
1475
|
+
],
|
|
1476
|
+
"source": [
|
|
1477
|
+
"got = client.retrieve(uuid_list=found.ids,\n",
|
|
1478
|
+
" include=inc,\n",
|
|
1479
|
+
" dataset_list=['SDSS-DR16',priv_dr,'BOSS-DR16'])\n",
|
|
1480
|
+
"print(f'{got.count=}')"
|
|
1481
|
+
]
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
"cell_type": "markdown",
|
|
1485
|
+
"metadata": {},
|
|
1486
|
+
"source": [
|
|
1487
|
+
"# All Done"
|
|
1488
|
+
]
|
|
1489
|
+
},
|
|
1490
|
+
{
|
|
1491
|
+
"cell_type": "code",
|
|
1492
|
+
"execution_count": 45,
|
|
1493
|
+
"metadata": {},
|
|
1494
|
+
"outputs": [
|
|
1495
|
+
{
|
|
1496
|
+
"name": "stdout",
|
|
1497
|
+
"output_type": "stream",
|
|
1498
|
+
"text": [
|
|
1499
|
+
"Run finished: 2024-02-28 06:08:03.328587\n"
|
|
1500
|
+
]
|
|
1501
|
+
}
|
|
1502
|
+
],
|
|
1503
|
+
"source": [
|
|
1504
|
+
"print(f'Run finished: {str(datetime.now())}')"
|
|
1505
|
+
]
|
|
1506
|
+
}
|
|
1507
|
+
],
|
|
1508
|
+
"metadata": {
|
|
1509
|
+
"kernelspec": {
|
|
1510
|
+
"display_name": "Python 3 (ipykernel)",
|
|
1511
|
+
"language": "python",
|
|
1512
|
+
"name": "python3"
|
|
1513
|
+
},
|
|
1514
|
+
"language_info": {
|
|
1515
|
+
"codemirror_mode": {
|
|
1516
|
+
"name": "ipython",
|
|
1517
|
+
"version": 3
|
|
1518
|
+
},
|
|
1519
|
+
"file_extension": ".py",
|
|
1520
|
+
"mimetype": "text/x-python",
|
|
1521
|
+
"name": "python",
|
|
1522
|
+
"nbconvert_exporter": "python",
|
|
1523
|
+
"pygments_lexer": "ipython3",
|
|
1524
|
+
"version": "3.10.12"
|
|
1525
|
+
},
|
|
1526
|
+
"toc": {
|
|
1527
|
+
"base_numbering": 1
|
|
1528
|
+
},
|
|
1529
|
+
"toc-showmarkdowntxt": false
|
|
1530
|
+
},
|
|
1531
|
+
"nbformat": 4,
|
|
1532
|
+
"nbformat_minor": 4
|
|
1533
|
+
}
|