sparclclient 1.2.2b8__py2.py3-none-any.whl → 1.2.2b10__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.
@@ -18,7 +18,7 @@
18
18
  "outputs": [],
19
19
  "source": [
20
20
  "__author__ = 'Steve Pothier <steve.pothier@noirlab.edu>'\n",
21
- "__version__ = '20240224' # yyyymmdd; \n",
21
+ "__version__ = '20240306' # yyyymmdd; \n",
22
22
  "__keywords__ = ['HowTo', 'astronomy', 'tutorial', 'client', 'sparcl', 'NOIRlab']"
23
23
  ]
24
24
  },
@@ -63,7 +63,9 @@
63
63
  {
64
64
  "cell_type": "code",
65
65
  "execution_count": 2,
66
- "metadata": {},
66
+ "metadata": {
67
+ "tags": []
68
+ },
67
69
  "outputs": [],
68
70
  "source": [
69
71
  "from pprint import pformat as pf\n",
@@ -78,6 +80,7 @@
78
80
  "import matplotlib.pyplot as plt\n",
79
81
  "import numpy as np\n",
80
82
  "import pandas as pd\n",
83
+ "from IPython.display import display, Markdown, Latex\n",
81
84
  "\n",
82
85
  "class StopExecution(Exception):\n",
83
86
  " def _render_traceback_(self):\n",
@@ -89,6 +92,13 @@
89
92
  "plt.rcParams['font.size'] = 14"
90
93
  ]
91
94
  },
95
+ {
96
+ "cell_type": "raw",
97
+ "metadata": {},
98
+ "source": [
99
+ "### "
100
+ ]
101
+ },
92
102
  {
93
103
  "cell_type": "markdown",
94
104
  "metadata": {
@@ -103,44 +113,52 @@
103
113
  {
104
114
  "cell_type": "code",
105
115
  "execution_count": 3,
106
- "metadata": {},
116
+ "metadata": {
117
+ "tags": []
118
+ },
107
119
  "outputs": [
108
120
  {
109
121
  "name": "stdout",
110
122
  "output_type": "stream",
111
123
  "text": [
112
- "Requirement already satisfied: sparclclient in /home/pothiers/sandbox/sparclclient/venv/lib/python3.10/site-packages (1.2.2b6)\n",
113
- "Collecting sparclclient\n",
114
- " Downloading sparclclient-1.2.2b7-py2.py3-none-any.whl.metadata (566 bytes)\n",
115
- "Downloading sparclclient-1.2.2b7-py2.py3-none-any.whl (111 kB)\n",
116
- "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m111.9/111.9 kB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m \u001b[36m0:00:01\u001b[0m\n",
117
- "\u001b[?25hInstalling collected packages: sparclclient\n",
124
+ "Processing /home/pothiers/sandbox/sparclclient\n",
125
+ " Installing build dependencies ... \u001b[?25ldone\n",
126
+ "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
127
+ "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
128
+ "\u001b[?25hBuilding wheels for collected packages: sparclclient\n",
129
+ " Building wheel for sparclclient (pyproject.toml) ... \u001b[?25ldone\n",
130
+ "\u001b[?25h Created wheel for sparclclient: filename=sparclclient-1.2.2b8-py2.py3-none-any.whl size=3533665 sha256=fc035800e3269eccc70d3658f293c93d2fe7f07850a17cbdb47c9b2ce0de36ad\n",
131
+ " Stored in directory: /tmp/pip-ephem-wheel-cache-lko1mvqq/wheels/9b/de/a2/3f7a82cf4ca7c9e775a1ed1daeea35010570464a1aaa8c370c\n",
132
+ "Successfully built sparclclient\n",
133
+ "Installing collected packages: sparclclient\n",
118
134
  " Attempting uninstall: sparclclient\n",
119
- " Found existing installation: sparclclient 1.2.2b6\n",
120
- " Uninstalling sparclclient-1.2.2b6:\n",
121
- " Successfully uninstalled sparclclient-1.2.2b6\n",
122
- "Successfully installed sparclclient-1.2.2b7\n"
135
+ " Found existing installation: sparclclient 1.2.2b8\n",
136
+ " Uninstalling sparclclient-1.2.2b8:\n",
137
+ " Successfully uninstalled sparclclient-1.2.2b8\n",
138
+ "Successfully installed sparclclient-1.2.2b8\n"
123
139
  ]
124
140
  }
125
141
  ],
126
142
  "source": [
127
143
  "# !pip install --upgrade sparclclient # Latest released version\n",
128
- "!pip install --pre --upgrade sparclclient # Lastest pre-released version\n",
144
+ "# !pip install --pre --upgrade sparclclient # Lastest pre-released version\n",
129
145
  "\n",
130
146
  "# Uncomment next line to load SPARCLCLIENT from local current version of software.\n",
131
- "#!pip install --pre --upgrade ../.."
147
+ "!pip install --pre --upgrade ../.."
132
148
  ]
133
149
  },
134
150
  {
135
151
  "cell_type": "code",
136
152
  "execution_count": 4,
137
- "metadata": {},
153
+ "metadata": {
154
+ "tags": []
155
+ },
138
156
  "outputs": [
139
157
  {
140
158
  "name": "stdout",
141
159
  "output_type": "stream",
142
160
  "text": [
143
- "Run started: 2024-03-06 07:12:12.121248\n"
161
+ "Run started: 2024-05-02 10:22:12.795845\n"
144
162
  ]
145
163
  }
146
164
  ],
@@ -167,7 +185,8 @@
167
185
  "cell_type": "code",
168
186
  "execution_count": 5,
169
187
  "metadata": {
170
- "scrolled": true
188
+ "scrolled": true,
189
+ "tags": []
171
190
  },
172
191
  "outputs": [
173
192
  {
@@ -182,12 +201,14 @@
182
201
  "# How much output to we want to show?\n",
183
202
  "show_help = False # HELP for client functions\n",
184
203
  "show_curl = True # Show the underlying SPARCL Server API call\n",
204
+ "verbose = True\n",
185
205
  "\n",
186
206
  "server = 'https://astrosparcl.datalab.noirlab.edu' # Public Server\n",
187
207
  "server = 'https://sparc1.datalab.noirlab.edu' # internal TEST Server\n",
188
- "#server = 'http://localhost:8050' # internal DEV Server\n",
208
+ "server = 'http://localhost:8050' # internal DEV Server\n",
189
209
  "\n",
190
- "priv_dr = 'SDSS-DR17'\n",
210
+ "priv_dr = 'SDSS-DR17-test'\n",
211
+ "pub_dr = 'BOSS-DR16'\n",
191
212
  "\n",
192
213
  "# Authenticated Users that are never authorized for anything important.\n",
193
214
  "# These are authenticated on both Public and Test SSO servers.\n",
@@ -201,21 +222,23 @@
201
222
  "cell_type": "code",
202
223
  "execution_count": 6,
203
224
  "metadata": {
204
- "scrolled": true
225
+ "scrolled": true,
226
+ "tags": []
205
227
  },
206
228
  "outputs": [
207
229
  {
208
230
  "name": "stdout",
209
231
  "output_type": "stream",
210
232
  "text": [
211
- "client=(sparclclient:1.2.2b7, api:11.0, http://localhost:8050/sparc, client_hash=1223070d1915675d0589eeb5844f9c3d535498d4, verbose=False, connect_timeout=1.1, read_timeout=5400.0)\n"
233
+ "apiurl=http://localhost:8050/sparc\n",
234
+ "client=(sparclclient:1.2.2b8, api:11.0, http://localhost:8050/sparc, client_hash=f7bd410278bee26a425387c598dd47e80a8fcdcb, verbose=True, connect_timeout=1.1, read_timeout=5400.0)\n"
212
235
  ]
213
236
  }
214
237
  ],
215
238
  "source": [
216
239
  "if show_help:\n",
217
240
  " help(sparcl.client.SparclClient)\n",
218
- "client = sparcl.client.SparclClient(url=server, show_curl=show_curl)\n",
241
+ "client = sparcl.client.SparclClient(url=server, show_curl=show_curl, verbose=verbose)\n",
219
242
  "print(f'{client=}')"
220
243
  ]
221
244
  },
@@ -239,12 +262,14 @@
239
262
  {
240
263
  "cell_type": "code",
241
264
  "execution_count": 7,
242
- "metadata": {},
265
+ "metadata": {
266
+ "tags": []
267
+ },
243
268
  "outputs": [
244
269
  {
245
270
  "data": {
246
271
  "text/plain": [
247
- "{'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}"
272
+ "{'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17-test'}"
248
273
  ]
249
274
  },
250
275
  "execution_count": 7,
@@ -269,7 +294,8 @@
269
294
  "cell_type": "code",
270
295
  "execution_count": 8,
271
296
  "metadata": {
272
- "scrolled": true
297
+ "scrolled": true,
298
+ "tags": []
273
299
  },
274
300
  "outputs": [],
275
301
  "source": [
@@ -280,7 +306,9 @@
280
306
  {
281
307
  "cell_type": "code",
282
308
  "execution_count": 9,
283
- "metadata": {},
309
+ "metadata": {
310
+ "tags": []
311
+ },
284
312
  "outputs": [
285
313
  {
286
314
  "data": {
@@ -309,7 +337,9 @@
309
337
  {
310
338
  "cell_type": "code",
311
339
  "execution_count": 10,
312
- "metadata": {},
340
+ "metadata": {
341
+ "tags": []
342
+ },
313
343
  "outputs": [
314
344
  {
315
345
  "data": {
@@ -348,7 +378,9 @@
348
378
  {
349
379
  "cell_type": "code",
350
380
  "execution_count": 11,
351
- "metadata": {},
381
+ "metadata": {
382
+ "tags": []
383
+ },
352
384
  "outputs": [
353
385
  {
354
386
  "name": "stdout",
@@ -373,7 +405,9 @@
373
405
  {
374
406
  "cell_type": "code",
375
407
  "execution_count": 12,
376
- "metadata": {},
408
+ "metadata": {
409
+ "tags": []
410
+ },
377
411
  "outputs": [
378
412
  {
379
413
  "data": {
@@ -465,7 +499,9 @@
465
499
  {
466
500
  "cell_type": "code",
467
501
  "execution_count": 14,
468
- "metadata": {},
502
+ "metadata": {
503
+ "tags": []
504
+ },
469
505
  "outputs": [],
470
506
  "source": [
471
507
  "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
@@ -487,14 +523,17 @@
487
523
  "cell_type": "code",
488
524
  "execution_count": 15,
489
525
  "metadata": {
490
- "scrolled": true
526
+ "scrolled": true,
527
+ "tags": []
491
528
  },
492
529
  "outputs": [
493
530
  {
494
531
  "name": "stdout",
495
532
  "output_type": "stream",
496
533
  "text": [
497
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=20' | python3 -m json.tool\n"
534
+ "url=http://localhost:8050/sparc/find/?limit=20 sspec={'outfields': ['sparcl_id', 'specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err'], 'search': [['spectype', 'GALAXY'], ['redshift', 0.5, 0.9], ['data_release', 'BOSS-DR16', 'SDSS-DR16']]}\n",
535
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=20' | python3 -m json.tool\n",
536
+ "Record key counts: {'spectype': 20, 'redshift': 20, 'sparcl_id': 20, 'ra': 20, 'dec': 20, 'specid': 20, '_dr': 20, 'data_release': 20, 'redshift_err': 20}\n"
498
537
  ]
499
538
  }
500
539
  ],
@@ -514,7 +553,9 @@
514
553
  {
515
554
  "cell_type": "code",
516
555
  "execution_count": 16,
517
- "metadata": {},
556
+ "metadata": {
557
+ "tags": []
558
+ },
518
559
  "outputs": [
519
560
  {
520
561
  "data": {
@@ -537,28 +578,256 @@
537
578
  " <thead>\n",
538
579
  " <tr style=\"text-align: right;\">\n",
539
580
  " <th></th>\n",
540
- " <th>spectype</th>\n",
541
- " <th>specid</th>\n",
542
- " <th>sparcl_id</th>\n",
543
- " <th>redshift_err</th>\n",
544
581
  " <th>redshift</th>\n",
545
- " <th>data_release</th>\n",
546
- " <th>dec</th>\n",
547
582
  " <th>ra</th>\n",
583
+ " <th>dec</th>\n",
584
+ " <th>data_release</th>\n",
585
+ " <th>specid</th>\n",
586
+ " <th>redshift_err</th>\n",
587
+ " <th>spectype</th>\n",
588
+ " <th>sparcl_id</th>\n",
548
589
  " <th>_dr</th>\n",
549
590
  " </tr>\n",
550
591
  " </thead>\n",
551
592
  " <tbody>\n",
552
593
  " <tr>\n",
553
594
  " <th>0</th>\n",
595
+ " <td>0.545929</td>\n",
596
+ " <td>246.74298</td>\n",
597
+ " <td>35.985258</td>\n",
598
+ " <td>SDSS-DR16</td>\n",
599
+ " <td>1506516519029336064</td>\n",
600
+ " <td>0.000422</td>\n",
601
+ " <td>GALAXY</td>\n",
602
+ " <td>2c6c82dc-fe87-11ee-838b-08002725f1ef</td>\n",
603
+ " <td>SDSS-DR16</td>\n",
604
+ " </tr>\n",
605
+ " <tr>\n",
606
+ " <th>1</th>\n",
607
+ " <td>0.667431</td>\n",
608
+ " <td>245.40676</td>\n",
609
+ " <td>36.438884</td>\n",
610
+ " <td>SDSS-DR16</td>\n",
611
+ " <td>1506548404866541568</td>\n",
612
+ " <td>0.000026</td>\n",
613
+ " <td>GALAXY</td>\n",
614
+ " <td>3063feb6-fe87-11ee-8aa0-08002725f1ef</td>\n",
615
+ " <td>SDSS-DR16</td>\n",
616
+ " </tr>\n",
617
+ " <tr>\n",
618
+ " <th>2</th>\n",
619
+ " <td>0.502511</td>\n",
620
+ " <td>246.45702</td>\n",
621
+ " <td>36.657405</td>\n",
622
+ " <td>SDSS-DR16</td>\n",
623
+ " <td>1506572869000259584</td>\n",
624
+ " <td>0.000172</td>\n",
625
+ " <td>GALAXY</td>\n",
626
+ " <td>336d71cf-fe87-11ee-9390-08002725f1ef</td>\n",
627
+ " <td>SDSS-DR16</td>\n",
628
+ " </tr>\n",
629
+ " <tr>\n",
630
+ " <th>3</th>\n",
631
+ " <td>0.724874</td>\n",
632
+ " <td>246.89323</td>\n",
633
+ " <td>37.209662</td>\n",
634
+ " <td>SDSS-DR16</td>\n",
635
+ " <td>1506578916314212352</td>\n",
636
+ " <td>11.831918</td>\n",
637
+ " <td>GALAXY</td>\n",
638
+ " <td>342e5eaa-fe87-11ee-9047-08002725f1ef</td>\n",
639
+ " <td>SDSS-DR16</td>\n",
640
+ " </tr>\n",
641
+ " <tr>\n",
642
+ " <th>4</th>\n",
643
+ " <td>0.741196</td>\n",
644
+ " <td>247.40873</td>\n",
645
+ " <td>36.381456</td>\n",
646
+ " <td>SDSS-DR16</td>\n",
647
+ " <td>1506596508500256768</td>\n",
648
+ " <td>0.614932</td>\n",
649
+ " <td>GALAXY</td>\n",
650
+ " <td>36565b1b-fe87-11ee-b857-08002725f1ef</td>\n",
651
+ " <td>SDSS-DR16</td>\n",
652
+ " </tr>\n",
653
+ " <tr>\n",
654
+ " <th>5</th>\n",
655
+ " <td>0.675723</td>\n",
656
+ " <td>134.10755</td>\n",
657
+ " <td>28.038851</td>\n",
658
+ " <td>BOSS-DR16</td>\n",
659
+ " <td>-6444647351317147648</td>\n",
660
+ " <td>0.000241</td>\n",
661
+ " <td>GALAXY</td>\n",
662
+ " <td>5182df54-fe87-11ee-a660-08002725f1ef</td>\n",
663
+ " <td>BOSS-DR16</td>\n",
664
+ " </tr>\n",
665
+ " <tr>\n",
666
+ " <th>6</th>\n",
667
+ " <td>0.782685</td>\n",
668
+ " <td>134.23727</td>\n",
669
+ " <td>28.084685</td>\n",
670
+ " <td>BOSS-DR16</td>\n",
671
+ " <td>-6444646251805519872</td>\n",
672
+ " <td>0.000242</td>\n",
673
+ " <td>GALAXY</td>\n",
674
+ " <td>51ad9b94-fe87-11ee-af3e-08002725f1ef</td>\n",
675
+ " <td>BOSS-DR16</td>\n",
676
+ " </tr>\n",
677
+ " <tr>\n",
678
+ " <th>7</th>\n",
679
+ " <td>0.797439</td>\n",
680
+ " <td>133.98095</td>\n",
681
+ " <td>28.226386</td>\n",
682
+ " <td>BOSS-DR16</td>\n",
683
+ " <td>-6444643503026450432</td>\n",
684
+ " <td>0.000424</td>\n",
685
+ " <td>GALAXY</td>\n",
686
+ " <td>521321c8-fe87-11ee-946d-08002725f1ef</td>\n",
687
+ " <td>BOSS-DR16</td>\n",
688
+ " </tr>\n",
689
+ " <tr>\n",
690
+ " <th>8</th>\n",
691
+ " <td>0.647712</td>\n",
692
+ " <td>134.54531</td>\n",
693
+ " <td>28.429551</td>\n",
694
+ " <td>BOSS-DR16</td>\n",
695
+ " <td>-6444641304003194880</td>\n",
696
+ " <td>0.000238</td>\n",
697
+ " <td>GALAXY</td>\n",
698
+ " <td>52643970-fe87-11ee-abb3-08002725f1ef</td>\n",
699
+ " <td>BOSS-DR16</td>\n",
700
+ " </tr>\n",
701
+ " <tr>\n",
702
+ " <th>9</th>\n",
703
+ " <td>0.886086</td>\n",
704
+ " <td>134.46525</td>\n",
705
+ " <td>28.452505</td>\n",
706
+ " <td>BOSS-DR16</td>\n",
707
+ " <td>-6444640754247380992</td>\n",
708
+ " <td>0.000274</td>\n",
709
+ " <td>GALAXY</td>\n",
710
+ " <td>5278859e-fe87-11ee-8427-08002725f1ef</td>\n",
711
+ " <td>BOSS-DR16</td>\n",
712
+ " </tr>\n",
713
+ " <tr>\n",
714
+ " <th>10</th>\n",
715
+ " <td>0.898559</td>\n",
716
+ " <td>134.43695</td>\n",
717
+ " <td>28.450988</td>\n",
718
+ " <td>BOSS-DR16</td>\n",
719
+ " <td>-6444640204491567104</td>\n",
720
+ " <td>0.000311</td>\n",
721
+ " <td>GALAXY</td>\n",
722
+ " <td>52913c34-fe87-11ee-844b-08002725f1ef</td>\n",
723
+ " <td>BOSS-DR16</td>\n",
724
+ " </tr>\n",
725
+ " <tr>\n",
726
+ " <th>11</th>\n",
727
+ " <td>0.566015</td>\n",
728
+ " <td>133.95386</td>\n",
729
+ " <td>27.305313</td>\n",
730
+ " <td>BOSS-DR16</td>\n",
731
+ " <td>-6444639654735753216</td>\n",
732
+ " <td>0.000315</td>\n",
733
+ " <td>GALAXY</td>\n",
734
+ " <td>52a796f0-fe87-11ee-b337-08002725f1ef</td>\n",
735
+ " <td>BOSS-DR16</td>\n",
736
+ " </tr>\n",
737
+ " <tr>\n",
738
+ " <th>12</th>\n",
739
+ " <td>0.599517</td>\n",
740
+ " <td>134.05133</td>\n",
741
+ " <td>27.381025</td>\n",
742
+ " <td>BOSS-DR16</td>\n",
743
+ " <td>-6444639104979939328</td>\n",
744
+ " <td>0.000412</td>\n",
745
+ " <td>GALAXY</td>\n",
746
+ " <td>52bbb47f-fe87-11ee-b8d7-08002725f1ef</td>\n",
747
+ " <td>BOSS-DR16</td>\n",
748
+ " </tr>\n",
749
+ " <tr>\n",
750
+ " <th>13</th>\n",
751
+ " <td>0.812179</td>\n",
752
+ " <td>133.95189</td>\n",
753
+ " <td>27.333753</td>\n",
754
+ " <td>BOSS-DR16</td>\n",
755
+ " <td>-6444638555224125440</td>\n",
756
+ " <td>0.000338</td>\n",
757
+ " <td>GALAXY</td>\n",
758
+ " <td>52cfb971-fe87-11ee-be51-08002725f1ef</td>\n",
759
+ " <td>BOSS-DR16</td>\n",
760
+ " </tr>\n",
761
+ " <tr>\n",
762
+ " <th>14</th>\n",
763
+ " <td>0.795586</td>\n",
764
+ " <td>134.21014</td>\n",
765
+ " <td>27.571681</td>\n",
766
+ " <td>BOSS-DR16</td>\n",
767
+ " <td>-6444638005468311552</td>\n",
768
+ " <td>0.000337</td>\n",
769
+ " <td>GALAXY</td>\n",
770
+ " <td>52e3cf35-fe87-11ee-b89c-08002725f1ef</td>\n",
771
+ " <td>BOSS-DR16</td>\n",
772
+ " </tr>\n",
773
+ " <tr>\n",
774
+ " <th>15</th>\n",
775
+ " <td>0.554642</td>\n",
776
+ " <td>134.11568</td>\n",
777
+ " <td>27.491442</td>\n",
778
+ " <td>BOSS-DR16</td>\n",
779
+ " <td>-6444636356200869888</td>\n",
780
+ " <td>0.000287</td>\n",
781
+ " <td>GALAXY</td>\n",
782
+ " <td>53203e47-fe87-11ee-b26f-08002725f1ef</td>\n",
783
+ " <td>BOSS-DR16</td>\n",
784
+ " </tr>\n",
785
+ " <tr>\n",
786
+ " <th>16</th>\n",
787
+ " <td>0.688878</td>\n",
788
+ " <td>134.19652</td>\n",
789
+ " <td>27.657880</td>\n",
790
+ " <td>BOSS-DR16</td>\n",
791
+ " <td>-6444635256689242112</td>\n",
792
+ " <td>0.000177</td>\n",
793
+ " <td>GALAXY</td>\n",
794
+ " <td>534af931-fe87-11ee-8467-08002725f1ef</td>\n",
795
+ " <td>BOSS-DR16</td>\n",
796
+ " </tr>\n",
797
+ " <tr>\n",
798
+ " <th>17</th>\n",
799
+ " <td>0.638226</td>\n",
800
+ " <td>133.85629</td>\n",
801
+ " <td>28.080178</td>\n",
802
+ " <td>BOSS-DR16</td>\n",
803
+ " <td>-6444633057665986560</td>\n",
804
+ " <td>0.000194</td>\n",
805
+ " <td>GALAXY</td>\n",
806
+ " <td>539b0add-fe87-11ee-b991-08002725f1ef</td>\n",
807
+ " <td>BOSS-DR16</td>\n",
808
+ " </tr>\n",
809
+ " <tr>\n",
810
+ " <th>18</th>\n",
811
+ " <td>0.614235</td>\n",
812
+ " <td>133.79296</td>\n",
813
+ " <td>27.907149</td>\n",
814
+ " <td>BOSS-DR16</td>\n",
815
+ " <td>-6444632233032265728</td>\n",
816
+ " <td>0.000294</td>\n",
554
817
  " <td>GALAXY</td>\n",
555
- " <td>-6444532452352045056</td>\n",
556
- " <td>bb3d4287-8a2f-479f-9c7f-1053051e4925</td>\n",
557
- " <td>0.000332</td>\n",
558
- " <td>0.761637</td>\n",
818
+ " <td>53b9cd41-fe87-11ee-8132-08002725f1ef</td>\n",
819
+ " <td>BOSS-DR16</td>\n",
820
+ " </tr>\n",
821
+ " <tr>\n",
822
+ " <th>19</th>\n",
823
+ " <td>0.804484</td>\n",
824
+ " <td>133.87033</td>\n",
825
+ " <td>28.192423</td>\n",
559
826
  " <td>BOSS-DR16</td>\n",
560
- " <td>28.063643</td>\n",
561
- " <td>132.14379</td>\n",
827
+ " <td>-6444631408398544896</td>\n",
828
+ " <td>0.000317</td>\n",
829
+ " <td>GALAXY</td>\n",
830
+ " <td>53d853da-fe87-11ee-9f77-08002725f1ef</td>\n",
562
831
  " <td>BOSS-DR16</td>\n",
563
832
  " </tr>\n",
564
833
  " </tbody>\n",
@@ -566,11 +835,49 @@
566
835
  "</div>"
567
836
  ],
568
837
  "text/plain": [
569
- " spectype specid sparcl_id \\\n",
570
- "0 GALAXY -6444532452352045056 bb3d4287-8a2f-479f-9c7f-1053051e4925 \n",
838
+ " redshift ra dec data_release specid \\\n",
839
+ "0 0.545929 246.74298 35.985258 SDSS-DR16 1506516519029336064 \n",
840
+ "1 0.667431 245.40676 36.438884 SDSS-DR16 1506548404866541568 \n",
841
+ "2 0.502511 246.45702 36.657405 SDSS-DR16 1506572869000259584 \n",
842
+ "3 0.724874 246.89323 37.209662 SDSS-DR16 1506578916314212352 \n",
843
+ "4 0.741196 247.40873 36.381456 SDSS-DR16 1506596508500256768 \n",
844
+ "5 0.675723 134.10755 28.038851 BOSS-DR16 -6444647351317147648 \n",
845
+ "6 0.782685 134.23727 28.084685 BOSS-DR16 -6444646251805519872 \n",
846
+ "7 0.797439 133.98095 28.226386 BOSS-DR16 -6444643503026450432 \n",
847
+ "8 0.647712 134.54531 28.429551 BOSS-DR16 -6444641304003194880 \n",
848
+ "9 0.886086 134.46525 28.452505 BOSS-DR16 -6444640754247380992 \n",
849
+ "10 0.898559 134.43695 28.450988 BOSS-DR16 -6444640204491567104 \n",
850
+ "11 0.566015 133.95386 27.305313 BOSS-DR16 -6444639654735753216 \n",
851
+ "12 0.599517 134.05133 27.381025 BOSS-DR16 -6444639104979939328 \n",
852
+ "13 0.812179 133.95189 27.333753 BOSS-DR16 -6444638555224125440 \n",
853
+ "14 0.795586 134.21014 27.571681 BOSS-DR16 -6444638005468311552 \n",
854
+ "15 0.554642 134.11568 27.491442 BOSS-DR16 -6444636356200869888 \n",
855
+ "16 0.688878 134.19652 27.657880 BOSS-DR16 -6444635256689242112 \n",
856
+ "17 0.638226 133.85629 28.080178 BOSS-DR16 -6444633057665986560 \n",
857
+ "18 0.614235 133.79296 27.907149 BOSS-DR16 -6444632233032265728 \n",
858
+ "19 0.804484 133.87033 28.192423 BOSS-DR16 -6444631408398544896 \n",
571
859
  "\n",
572
- " redshift_err redshift data_release dec ra _dr \n",
573
- "0 0.000332 0.761637 BOSS-DR16 28.063643 132.14379 BOSS-DR16 "
860
+ " redshift_err spectype sparcl_id _dr \n",
861
+ "0 0.000422 GALAXY 2c6c82dc-fe87-11ee-838b-08002725f1ef SDSS-DR16 \n",
862
+ "1 0.000026 GALAXY 3063feb6-fe87-11ee-8aa0-08002725f1ef SDSS-DR16 \n",
863
+ "2 0.000172 GALAXY 336d71cf-fe87-11ee-9390-08002725f1ef SDSS-DR16 \n",
864
+ "3 11.831918 GALAXY 342e5eaa-fe87-11ee-9047-08002725f1ef SDSS-DR16 \n",
865
+ "4 0.614932 GALAXY 36565b1b-fe87-11ee-b857-08002725f1ef SDSS-DR16 \n",
866
+ "5 0.000241 GALAXY 5182df54-fe87-11ee-a660-08002725f1ef BOSS-DR16 \n",
867
+ "6 0.000242 GALAXY 51ad9b94-fe87-11ee-af3e-08002725f1ef BOSS-DR16 \n",
868
+ "7 0.000424 GALAXY 521321c8-fe87-11ee-946d-08002725f1ef BOSS-DR16 \n",
869
+ "8 0.000238 GALAXY 52643970-fe87-11ee-abb3-08002725f1ef BOSS-DR16 \n",
870
+ "9 0.000274 GALAXY 5278859e-fe87-11ee-8427-08002725f1ef BOSS-DR16 \n",
871
+ "10 0.000311 GALAXY 52913c34-fe87-11ee-844b-08002725f1ef BOSS-DR16 \n",
872
+ "11 0.000315 GALAXY 52a796f0-fe87-11ee-b337-08002725f1ef BOSS-DR16 \n",
873
+ "12 0.000412 GALAXY 52bbb47f-fe87-11ee-b8d7-08002725f1ef BOSS-DR16 \n",
874
+ "13 0.000338 GALAXY 52cfb971-fe87-11ee-be51-08002725f1ef BOSS-DR16 \n",
875
+ "14 0.000337 GALAXY 52e3cf35-fe87-11ee-b89c-08002725f1ef BOSS-DR16 \n",
876
+ "15 0.000287 GALAXY 53203e47-fe87-11ee-b26f-08002725f1ef BOSS-DR16 \n",
877
+ "16 0.000177 GALAXY 534af931-fe87-11ee-8467-08002725f1ef BOSS-DR16 \n",
878
+ "17 0.000194 GALAXY 539b0add-fe87-11ee-b991-08002725f1ef BOSS-DR16 \n",
879
+ "18 0.000294 GALAXY 53b9cd41-fe87-11ee-8132-08002725f1ef BOSS-DR16 \n",
880
+ "19 0.000317 GALAXY 53d853da-fe87-11ee-9f77-08002725f1ef BOSS-DR16 "
574
881
  ]
575
882
  },
576
883
  "execution_count": 16,
@@ -608,7 +915,8 @@
608
915
  "cell_type": "code",
609
916
  "execution_count": 17,
610
917
  "metadata": {
611
- "scrolled": true
918
+ "scrolled": true,
919
+ "tags": []
612
920
  },
613
921
  "outputs": [],
614
922
  "source": [
@@ -629,7 +937,9 @@
629
937
  {
630
938
  "cell_type": "code",
631
939
  "execution_count": 18,
632
- "metadata": {},
940
+ "metadata": {
941
+ "tags": []
942
+ },
633
943
  "outputs": [],
634
944
  "source": [
635
945
  "# Define the fields to include in the retrieve function\n",
@@ -639,22 +949,28 @@
639
949
  {
640
950
  "cell_type": "code",
641
951
  "execution_count": 19,
642
- "metadata": {},
952
+ "metadata": {
953
+ "tags": []
954
+ },
643
955
  "outputs": [
644
956
  {
645
957
  "name": "stdout",
646
958
  "output_type": "stream",
647
959
  "text": [
648
- "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"bb3d4287-8a2f-479f-9c7f-1053051e4925\"]' 'http://localhost:8050/sparc/spectras/?include=spectype%2Cmodel%2Cspecid%2Cdata_release%2Civar%2Cflux%2Cwavelength%2Cmask%2Credshift&format=pkl&dataset_list=SDSS-DR16%2CBOSS-DR16' | python3 -m json.tool\n",
649
- "CPU times: user 916 µs, sys: 2.36 ms, total: 3.28 ms\n",
650
- "Wall time: 49.6 ms\n"
960
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=mask%2Cspectype%2Cmodel%2Credshift%2Cwavelength%2Cspecid%2Civar%2Cdata_release%2Cflux&format=pkl&dataset_list=SDSS-DR16%2CBOSS-DR16\"\n",
961
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"2c6c82dc-fe87-11ee-838b-08002725f1ef\", \"3063feb6-fe87-11ee-8aa0-08002725f1ef\", \"336d71cf-fe87-11ee-9390-08002725f1ef\", \"342e5eaa-fe87-11ee-9047-08002725f1ef\", \"36565b1b-fe87-11ee-b857-08002725f1ef\", \"5182df54-fe87-11ee-a660-08002725f1ef\", \"51ad9b94-fe87-11ee-af3e-08002725f1ef\", \"521321c8-fe87-11ee-946d-08002725f1ef\", \"52643970-fe87-11ee-abb3-08002725f1ef\", \"5278859e-fe87-11ee-8427-08002725f1ef\", \"52913c34-fe87-11ee-844b-08002725f1ef\", \"52a796f0-fe87-11ee-b337-08002725f1ef\", \"52bbb47f-fe87-11ee-b8d7-08002725f1ef\", \"52cfb971-fe87-11ee-be51-08002725f1ef\", \"52e3cf35-fe87-11ee-b89c-08002725f1ef\", \"53203e47-fe87-11ee-b26f-08002725f1ef\", \"534af931-fe87-11ee-8467-08002725f1ef\", \"539b0add-fe87-11ee-b991-08002725f1ef\", \"53b9cd41-fe87-11ee-8132-08002725f1ef\", \"53d853da-fe87-11ee-9f77-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=mask%2Cspectype%2Cmodel%2Credshift%2Cwavelength%2Cspecid%2Civar%2Cdata_release%2Cflux&format=pkl&dataset_list=SDSS-DR16%2CBOSS-DR16' | python3 -m json.tool\n",
962
+ "Got response to post in 0.264625997049734 seconds\n",
963
+ "Got 20 spectra in 0.26 seconds (76 spectra/sec)\n",
964
+ "{'success': True, 'info': [\"Successfully found 20 records in dr_list=['SDSS-DR16', 'BOSS-DR16']\"], 'warnings': []}\n",
965
+ "CPU times: user 7.69 ms, sys: 10 ms, total: 17.7 ms\n",
966
+ "Wall time: 269 ms\n"
651
967
  ]
652
968
  },
653
969
  {
654
970
  "data": {
655
971
  "text/plain": [
656
972
  "{'status': {'success': True,\n",
657
- " 'info': [\"Successfully found 1 records in dr_list=['SDSS-DR16', 'BOSS-DR16']\"],\n",
973
+ " 'info': [\"Successfully found 20 records in dr_list=['SDSS-DR16', 'BOSS-DR16']\"],\n",
658
974
  " 'warnings': []}}"
659
975
  ]
660
976
  },
@@ -674,24 +990,26 @@
674
990
  {
675
991
  "cell_type": "code",
676
992
  "execution_count": 20,
677
- "metadata": {},
993
+ "metadata": {
994
+ "tags": []
995
+ },
678
996
  "outputs": [
679
997
  {
680
998
  "data": {
681
999
  "text/plain": [
682
- "{'redshift': 0.761636912822723,\n",
1000
+ "{'redshift': 0.5459291338920593,\n",
1001
+ " 'specid': 1506516519029336064,\n",
683
1002
  " 'spectype': 'GALAXY',\n",
684
- " 'specid': -6444532452352045056,\n",
685
- " 'data_release': 'BOSS-DR16',\n",
686
- " 'model': array([-0.01559776, -0.01588696, -0.01609746, ..., 0.94615489,\n",
687
- " 0.92513317, 0.8983984 ]),\n",
688
- " 'mask': array([88080384, 88080384, 88080384, ..., 83886080, 83886080, 83886080]),\n",
1003
+ " 'data_release': 'SDSS-DR16',\n",
1004
+ " '_dr': 'SDSS-DR16',\n",
689
1005
  " 'ivar': array([0., 0., 0., ..., 0., 0., 0.]),\n",
690
- " 'flux': array([0.19426258, 0.19424935, 0.19423614, ..., 0.27637786, 0.2763944 ,\n",
691
- " 0.27641097]),\n",
692
- " 'wavelength': array([ 3580.13991843, 3580.96437103, 3581.78901348, ...,\n",
693
- " 10368.11964061, 10370.50726326, 10372.89543574]),\n",
694
- " '_dr': 'BOSS-DR16'}"
1006
+ " 'mask': array([16777216, 16777216, 16777216, ..., 16777216, 16777216, 16777216]),\n",
1007
+ " 'flux': array([1.23176956, 1.23148859, 1.23120809, ..., 4.00684404, 4.00690508,\n",
1008
+ " 4.00696611]),\n",
1009
+ " 'wavelength': array([3794.89706208, 3795.77097003, 3796.64507922, ..., 9217.22098659,\n",
1010
+ " 9219.34357452, 9221.46665124]),\n",
1011
+ " 'model': array([0.34971759, 0.35207507, 0.35443148, ..., 2.31373858, 2.30945611,\n",
1012
+ " 2.30356026])}"
695
1013
  ]
696
1014
  },
697
1015
  "execution_count": 20,
@@ -713,12 +1031,14 @@
713
1031
  {
714
1032
  "cell_type": "code",
715
1033
  "execution_count": 21,
716
- "metadata": {},
1034
+ "metadata": {
1035
+ "tags": []
1036
+ },
717
1037
  "outputs": [
718
1038
  {
719
1039
  "data": {
720
1040
  "text/plain": [
721
- "<matplotlib.legend.Legend at 0x7f47bfced810>"
1041
+ "<matplotlib.legend.Legend at 0x7fd1f96db7c0>"
722
1042
  ]
723
1043
  },
724
1044
  "execution_count": 21,
@@ -728,18 +1048,18 @@
728
1048
  {
729
1049
  "data": {
730
1050
  "application/vnd.jupyter.widget-view+json": {
731
- "model_id": "a2854906526c42f49c1fc769732e5228",
1051
+ "model_id": "84c674d2919c4a9f804a778cb667076f",
732
1052
  "version_major": 2,
733
1053
  "version_minor": 0
734
1054
  },
735
- "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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",
1055
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAACFfklEQVR4nO3dd3gUVdsG8Hu2JqQCCRAgDQhI70gvUlUUFURREVB4bXwWVBAEaQKiKGIvqCCCDRQUUHoNvQSQGiDUAKEmJKRsOd8fyW62l2Szu0nu33VxkcycnTk7mZ2dZ845z5GEEAJEREREREReIPN1BYiIiIiIqPxgAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUMQIiIiIiIyGsYgBARERERkdcwACEiIiIiIq9hAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUKX1eACun1eqSmpiIkJASSJPm6OkRERERkQQiB27dvo3r16pDJ+Cy/KBiA+JHU1FRER0f7uhpERERE5MT58+dRs2ZNX1ejVGIA4kdCQkIA5J/QoaGhPq4NEREREVnKyMhAdHS08b6N3McAxI8Yul2FhoYyACEiIiLyY+wuX3TsuEZERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrmIaXiIiIqIBOp4NGo/F1NciL5HI5lEqlr6tRrjAAISIionJPCIHLly8jPT0dQghfV4e8TK1WIyIigvOw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ujrkZWq1GjVq1EBoaKivq1IuMAAhIiKick+SJERFRaFKlSrGsQBUPsjlcna78jIGIEREREQFDONBiKjkcBA6ERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBFRGSCEr2tARETkGgYgRERERETkNQxAiIiIiIjIaxiAEBGVAZLk6xoQERG5hgEIEVEZwDEgRERUWjAAISIiIiIir2EAQkREREREXsMAhIioDOAYECIiKi0YgBARlQEcA0JERKUFAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIjKAAHh6yoQERG5hAEIERERERF5DQMQIqIyQILk6yoQERG5hAEIERERERF5DQMQIqIygGNAiIiotGAAQkREREREXsMAhIioDOAYECIiKi0YgBARERERkdcwACEiKgM4BoSIiEoLBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMACx8NNPP+G5555Dq1atoFarIUkS5s2bZ7d8RkYGRo0ahdjYWKjVasTFxeHNN99EZmam9ypNRERERFRKKHxdAX8zfvx4nD17FhEREYiKisLZs2ftls3KykKXLl2QlJSEXr16YdCgQdi/fz9mzZqFTZs2YfPmzQgICPBi7YmIiIiI/BtbQCzMnTsXZ86cwdWrV/H88887LPv+++8jKSkJY8aMwapVq/Dee+9h1apVGDNmDHbv3o3Zs2d7qdZERIWEYEYsIiLyXwxALPTo0QOxsbFOywkhMHfuXAQHB2PChAlm6yZMmIDg4GDMnTu3pKpJRERERFQqMQApouTkZKSmpqJDhw4ICgoyWxcUFIQOHTrg9OnTOH/+vI9qSERERETkfxiAFFFycjIAICEhweZ6w3JDOSIiIiIi4iD0IktPTwcAhIWF2VwfGhpqVs6W3Nxc5ObmGn/PyMjwYA2JiIiIiPwPW0B8aMaMGQgLCzP+i46O9nWViKgM4Bh0IvJ3By/cwpu/H0BaRo6vq0I+wACkiAwtH/ZaOAytGfZaSABg7NixSE9PN/7jeBEiIiIqDx78LBG/772A138/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",
736
1056
  "text/html": [
737
1057
  "\n",
738
1058
  " <div style=\"display: inline-block;\">\n",
739
1059
  " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
740
1060
  " Figure\n",
741
1061
  " </div>\n",
742
- " <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",
1062
+ " <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAACFfklEQVR4nO3dd3gUVdsG8Hu2JqQCCRAgDQhI70gvUlUUFURREVB4bXwWVBAEaQKiKGIvqCCCDRQUUHoNvQSQGiDUAKEmJKRsOd8fyW62l2Szu0nu33VxkcycnTk7mZ2dZ845z5GEEAJEREREREReIPN1BYiIiIiIqPxgAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUMQIiIiIiIyGsYgBARERERkdcwACEiIiIiIq9hAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUKX1eACun1eqSmpiIkJASSJPm6OkRERERkQQiB27dvo3r16pDJ+Cy/KBiA+JHU1FRER0f7uhpERERE5MT58+dRs2ZNX1ejVGIA4kdCQkIA5J/QoaGhPq4NEREREVnKyMhAdHS08b6N3McAxI8Yul2FhoYyACEiIiLyY+wuX3TsuEZERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrmIaXiIiIqIBOp4NGo/F1NciL5HI5lEqlr6tRrjAAISIionJPCIHLly8jPT0dQghfV4e8TK1WIyIigvOw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ujrkZWq1GjVq1EBoaKivq1IuMAAhIiKick+SJERFRaFKlSrGsQBUPsjlcna78jIGIEREREQFDONBiKjkcBA6ERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBFRGSCEr2tARETkGgYgRERERETkNQxAiIiIiIjIaxiAEBGVAZLk6xoQERG5hgEIEVEZwDEgRERUWjAAISIiIiIir2EAQkREREREXsMAhIioDOAYECIiKi0YgBARlQEcA0JERKUFAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIjKAAHh6yoQERG5hAEIERERERF5DQMQIqIyQILk6yoQERG5hAEIERERERF5DQMQIqIygGNAiIiotGAAQkREREREXsMAhIioDOAYECIiKi0YgBARERERkdcwACEiKgM4BoSIiEoLBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMACx8NNPP+G5555Dq1atoFarIUkS5s2bZ7d8RkYGRo0ahdjYWKjVasTFxeHNN99EZmam9ypNRERERFRKKHxdAX8zfvx4nD17FhEREYiKisLZs2ftls3KykKXLl2QlJSEXr16YdCgQdi/fz9mzZqFTZs2YfPmzQgICPBi7YmIiIiI/BtbQCzMnTsXZ86cwdWrV/H88887LPv+++8jKSkJY8aMwapVq/Dee+9h1apVGDNmDHbv3o3Zs2d7qdZERIWEYEYsIiLyXwxALPTo0QOxsbFOywkhMHfuXAQHB2PChAlm6yZMmIDg4GDMnTu3pKpJRERERFQqMQApouTkZKSmpqJDhw4ICgoyWxcUFIQOHTrg9OnTOH/+vI9qSERERETkfxiAFFFycjIAICEhweZ6w3JDOSIiIiIi4iD0IktPTwcAhIWF2VwfGhpqVs6W3Nxc5ObmGn/PyMjwYA2JiIiIiPwPW0B8aMaMGQgLCzP+i46O9nWViKgM4Bh0IvJ3By/cwpu/H0BaRo6vq0I+wACkiAwtH/ZaOAytGfZaSABg7NixSE9PN/7jeBEiIiIqDx78LBG/772A138/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' width=800.0/>\n",
743
1063
  " </div>\n",
744
1064
  " "
745
1065
  ],
@@ -772,7 +1092,9 @@
772
1092
  {
773
1093
  "cell_type": "code",
774
1094
  "execution_count": 22,
775
- "metadata": {},
1095
+ "metadata": {
1096
+ "tags": []
1097
+ },
776
1098
  "outputs": [
777
1099
  {
778
1100
  "name": "stdout",
@@ -789,7 +1111,9 @@
789
1111
  {
790
1112
  "cell_type": "code",
791
1113
  "execution_count": 23,
792
- "metadata": {},
1114
+ "metadata": {
1115
+ "tags": []
1116
+ },
793
1117
  "outputs": [],
794
1118
  "source": [
795
1119
  "#import sparcl.gather_2d\n",
@@ -823,7 +1147,9 @@
823
1147
  {
824
1148
  "cell_type": "code",
825
1149
  "execution_count": 24,
826
- "metadata": {},
1150
+ "metadata": {
1151
+ "tags": []
1152
+ },
827
1153
  "outputs": [],
828
1154
  "source": [
829
1155
  "if show_help:\n",
@@ -834,7 +1160,9 @@
834
1160
  {
835
1161
  "cell_type": "code",
836
1162
  "execution_count": 25,
837
- "metadata": {},
1163
+ "metadata": {
1164
+ "tags": []
1165
+ },
838
1166
  "outputs": [
839
1167
  {
840
1168
  "name": "stdout",
@@ -852,14 +1180,18 @@
852
1180
  "cell_type": "code",
853
1181
  "execution_count": 26,
854
1182
  "metadata": {
855
- "scrolled": true
1183
+ "scrolled": true,
1184
+ "tags": []
856
1185
  },
857
1186
  "outputs": [
858
1187
  {
859
1188
  "data": {
860
1189
  "text/plain": [
861
1190
  "{'Loggedin_As': 'test_user_1@noirlab.edu',\n",
862
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
1191
+ " 'Authorized_Datasets': {'BOSS-DR16',\n",
1192
+ " 'DESI-EDR',\n",
1193
+ " 'SDSS-DR16',\n",
1194
+ " 'SDSS-DR17-test'}}"
863
1195
  ]
864
1196
  },
865
1197
  "execution_count": 26,
@@ -874,7 +1206,9 @@
874
1206
  {
875
1207
  "cell_type": "code",
876
1208
  "execution_count": 27,
877
- "metadata": {},
1209
+ "metadata": {
1210
+ "tags": []
1211
+ },
878
1212
  "outputs": [
879
1213
  {
880
1214
  "name": "stdout",
@@ -891,7 +1225,9 @@
891
1225
  {
892
1226
  "cell_type": "code",
893
1227
  "execution_count": 28,
894
- "metadata": {},
1228
+ "metadata": {
1229
+ "tags": []
1230
+ },
895
1231
  "outputs": [
896
1232
  {
897
1233
  "data": {
@@ -916,419 +1252,434 @@
916
1252
  "## FIND"
917
1253
  ]
918
1254
  },
1255
+ {
1256
+ "cell_type": "code",
1257
+ "execution_count": 29,
1258
+ "metadata": {},
1259
+ "outputs": [],
1260
+ "source": [
1261
+ "out = ['sparcl_id', 'data_release']\n",
1262
+ "\n",
1263
+ "def pass_find(user, drs):\n",
1264
+ " client.login(user, usrpw)\n",
1265
+ " print(f'{client.authorized=}')\n",
1266
+ " try:\n",
1267
+ " if drs is None:\n",
1268
+ " found = client.find(outfields=out, limit=2)\n",
1269
+ " else:\n",
1270
+ " found = client.find(outfields=out, constraints=dict(data_release=drs), limit=2)\n",
1271
+ " print(f'\\nSUCCESS: {found.count=} records from FIND: {user=}; {drs=}')\n",
1272
+ " except Exception as err:\n",
1273
+ " raise Exception(f'\\nFAILED to get records from FIND: {user=}; {drs=}')\n",
1274
+ "\n",
1275
+ "def fail_find(user, drs):\n",
1276
+ " client.login(user, usrpw)\n",
1277
+ " print(f'{client.authorized=}')\n",
1278
+ "\n",
1279
+ " try:\n",
1280
+ " found = client.find(outfields=out, constraints=dict(data_release=drs), limit=2)\n",
1281
+ " raise Exception(f'\\nFAILED: Auth wrongly got {found.count} records in FIND: {user=}; {drs=}')\n",
1282
+ " except Exception as err:\n",
1283
+ " print(f'\\nSUCCESS: Find did not get records. \\n{err}')"
1284
+ ]
1285
+ },
919
1286
  {
920
1287
  "cell_type": "markdown",
921
1288
  "metadata": {},
922
1289
  "source": [
923
- "### Pass FIND with Public DRs as Anonymous"
1290
+ "### Pass FIND as Authorized with Default DRs"
924
1291
  ]
925
1292
  },
926
1293
  {
927
1294
  "cell_type": "code",
928
- "execution_count": 29,
929
- "metadata": {},
1295
+ "execution_count": 30,
1296
+ "metadata": {
1297
+ "tags": []
1298
+ },
930
1299
  "outputs": [
931
1300
  {
932
1301
  "name": "stdout",
933
1302
  "output_type": "stream",
934
1303
  "text": [
935
- "Logged-out successfully. Previously logged-in with email None.\n"
1304
+ "Logged in successfully with email='test_user_1@noirlab.edu'\n",
1305
+ "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16', 'SDSS-DR17-test'}}\n",
1306
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': []}\n",
1307
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1308
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
1309
+ "\n",
1310
+ "SUCCESS: found.count=2 records from FIND: user='test_user_1@noirlab.edu'; drs=None\n"
936
1311
  ]
937
1312
  }
938
1313
  ],
939
1314
  "source": [
940
- "client.logout()"
1315
+ "pass_find(auth_user, None)"
941
1316
  ]
942
1317
  },
943
1318
  {
944
- "cell_type": "code",
945
- "execution_count": 30,
1319
+ "cell_type": "markdown",
946
1320
  "metadata": {},
1321
+ "source": [
1322
+ "### Pass FIND as Authorized with Priv&Pub DRs"
1323
+ ]
1324
+ },
1325
+ {
1326
+ "cell_type": "code",
1327
+ "execution_count": 31,
1328
+ "metadata": {
1329
+ "scrolled": true,
1330
+ "tags": []
1331
+ },
947
1332
  "outputs": [
948
1333
  {
949
1334
  "name": "stdout",
950
1335
  "output_type": "stream",
951
1336
  "text": [
952
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
953
- "{'META': {'endpoint': 'sparc/find'},\n",
954
- " 'PARAMETERS': {'limit': 2,\n",
955
- " 'include': 'dec,ra,sparcl_id,specid',\n",
956
- " 'offset': 0,\n",
957
- " 'user': None,\n",
958
- " 'format': 'json',\n",
959
- " 'drs': ['BOSS-DR16', 'SDSS-DR16'],\n",
960
- " 'private_drs': ['SDSS-DR17'],\n",
961
- " 'username': 'Anonymous',\n",
962
- " 'json_payload': {'outfields': ['sparcl_id',\n",
963
- " 'specid',\n",
964
- " 'ra',\n",
965
- " 'dec',\n",
966
- " 'redshift',\n",
967
- " 'spectype',\n",
968
- " 'data_release',\n",
969
- " 'redshift_err'],\n",
970
- " 'search': [['spectype', 'GALAXY'],\n",
971
- " ['redshift', 0.5, 0.9],\n",
972
- " ['data_release',\n",
973
- " 'BOSS-DR16',\n",
974
- " 'SDSS-DR16']]}},\n",
975
- " 'HEADER': {'spectype': 'category',\n",
976
- " 'specid': 'np.int64',\n",
977
- " 'sparcl_id': 'str',\n",
978
- " 'redshift_err': 'np.float64',\n",
979
- " 'redshift': 'np.float64',\n",
980
- " 'data_release': 'category',\n",
981
- " 'dec': 'np.float64',\n",
982
- " 'ra': 'np.float64'},\n",
983
- " 'WARNINGS': ['OFFSET parameter needs SORT but it was not provided. Using '\n",
984
- " \"default 'sparcl_id' for sorting\"]}\n",
985
- "{'spectype': 'GALAXY', 'specid': -6444532452352045056, 'sparcl_id': 'bb3d4287-8a2f-479f-9c7f-1053051e4925', 'redshift_err': 0.000331654009642079, 'redshift': 0.761636912822723, 'data_release': 'BOSS-DR16', 'dec': 28.063643, 'ra': 132.14379, '_dr': 'BOSS-DR16'}\n",
1337
+ "Logged in successfully with email='test_user_1@noirlab.edu'\n",
1338
+ "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16', 'SDSS-DR17-test'}}\n",
1339
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'BOSS-DR16', 'SDSS-DR17-test']]}\n",
1340
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"BOSS-DR16\", \"SDSS-DR17-test\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1341
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
986
1342
  "\n",
987
- "SUCCESS: found.count=1 records from FIND\n"
1343
+ "SUCCESS: found.count=2 records from FIND: user='test_user_1@noirlab.edu'; drs=['BOSS-DR16', 'SDSS-DR17-test']\n"
988
1344
  ]
989
1345
  }
990
1346
  ],
991
1347
  "source": [
992
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
993
- "cons = {'spectype': ['GALAXY'],\n",
994
- " 'redshift': [0.5, 0.9],\n",
995
- " 'data_release': ['BOSS-DR16', 'SDSS-DR16']}\n",
996
- "found = client.find(outfields=out, constraints=cons, limit=2)\n",
997
- "pp(found.info)\n",
998
- "print(found.records[0])\n",
999
- "print(f'\\nSUCCESS: {found.count=} records from FIND')"
1348
+ "pass_find(auth_user, [pub_dr,priv_dr])"
1000
1349
  ]
1001
1350
  },
1002
1351
  {
1003
1352
  "cell_type": "markdown",
1004
1353
  "metadata": {},
1005
1354
  "source": [
1006
- "### Fail FIND with private DR as Anonymous"
1355
+ "### Pass FIND as Unauthorized with Default DRs\n",
1356
+ "DRs default to only what are authorized for authenticated user."
1007
1357
  ]
1008
1358
  },
1009
1359
  {
1010
1360
  "cell_type": "code",
1011
- "execution_count": 31,
1012
- "metadata": {},
1361
+ "execution_count": 32,
1362
+ "metadata": {
1363
+ "tags": []
1364
+ },
1013
1365
  "outputs": [
1014
1366
  {
1015
1367
  "name": "stdout",
1016
1368
  "output_type": "stream",
1017
1369
  "text": [
1018
- "Logged-out successfully. Previously logged-in with email None.\n"
1370
+ "Logged in successfully with email='test_user_2@noirlab.edu'\n",
1371
+ "client.authorized={'Loggedin_As': 'test_user_2@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1372
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': []}\n",
1373
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1374
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
1375
+ "\n",
1376
+ "SUCCESS: found.count=2 records from FIND: user='test_user_2@noirlab.edu'; drs=None\n"
1019
1377
  ]
1020
1378
  }
1021
1379
  ],
1022
1380
  "source": [
1023
- "client.logout()"
1381
+ "pass_find(unauth_user, None)"
1024
1382
  ]
1025
1383
  },
1026
1384
  {
1027
- "cell_type": "code",
1028
- "execution_count": 32,
1385
+ "cell_type": "markdown",
1029
1386
  "metadata": {},
1030
- "outputs": [
1031
- {
1032
- "data": {
1033
- "text/plain": [
1034
- "{'Loggedin_As': 'Anonymous',\n",
1035
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}}"
1036
- ]
1037
- },
1038
- "execution_count": 32,
1039
- "metadata": {},
1040
- "output_type": "execute_result"
1041
- }
1042
- ],
1043
1387
  "source": [
1044
- "client.authorized"
1388
+ "### Fail FIND as Unauthorized with Priv&Pub DRs"
1045
1389
  ]
1046
1390
  },
1047
1391
  {
1048
1392
  "cell_type": "code",
1049
1393
  "execution_count": 33,
1050
- "metadata": {},
1394
+ "metadata": {
1395
+ "tags": []
1396
+ },
1051
1397
  "outputs": [
1052
1398
  {
1053
1399
  "name": "stdout",
1054
1400
  "output_type": "stream",
1055
1401
  "text": [
1056
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR17\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1057
- "SUCCESS: Could not execute find: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. drs_requested={'SDSS-DR17', 'BOSS-DR16'} my_auth={'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'} [NODRACCESS] None\n"
1402
+ "Logged in successfully with email='test_user_2@noirlab.edu'\n",
1403
+ "client.authorized={'Loggedin_As': 'test_user_2@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1404
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'BOSS-DR16', 'SDSS-DR17-test']]}\n",
1405
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"BOSS-DR16\", \"SDSS-DR17-test\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1406
+ "Exception: response content=b'{\"errorMessage\": \"test_user_2@noirlab.edu is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1407
+ "\n",
1408
+ "SUCCESS: Find did not get records. \n",
1409
+ "[UNKNOWN] test_user_2@noirlab.edu is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1058
1410
  ]
1059
1411
  }
1060
1412
  ],
1061
1413
  "source": [
1062
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
1063
- "cons = {'spectype': ['GALAXY'],\n",
1064
- " 'redshift': [0.5, 0.9],\n",
1065
- " 'data_release': ['BOSS-DR16',priv_dr]}\n",
1066
- "try:\n",
1067
- " found = client.find(outfields=out, constraints=cons, limit=2)\n",
1068
- " print('FOUND info:')\n",
1069
- " pp(found.info)\n",
1070
- " print(f'\\nFOUND records. {found.records[0]=}')\n",
1071
- " gotrecord = True\n",
1072
- "except Exception as err:\n",
1073
- " gotrecord = False\n",
1074
- " print(f'SUCCESS: Could not execute find: {err}')\n",
1075
- "\n",
1076
- "if gotrecord:\n",
1077
- " raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
1414
+ "fail_find(unauth_user, [pub_dr,priv_dr])"
1078
1415
  ]
1079
1416
  },
1080
1417
  {
1081
1418
  "cell_type": "markdown",
1082
1419
  "metadata": {},
1083
1420
  "source": [
1084
- "### Pass FIND with default DR list as Anonymous"
1421
+ "### Pass FIND as Unknown with Default DRs\n",
1422
+ "DRs default to only what are authorized for authenticated user."
1085
1423
  ]
1086
1424
  },
1087
1425
  {
1088
1426
  "cell_type": "code",
1089
1427
  "execution_count": 34,
1090
- "metadata": {},
1428
+ "metadata": {
1429
+ "tags": []
1430
+ },
1091
1431
  "outputs": [
1092
1432
  {
1093
1433
  "name": "stdout",
1094
1434
  "output_type": "stream",
1095
1435
  "text": [
1096
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1097
- "FOUND info:\n",
1098
- "{'META': {'endpoint': 'sparc/find'},\n",
1099
- " 'PARAMETERS': {'limit': 2,\n",
1100
- " 'include': 'dec,ra,sparcl_id,specid',\n",
1101
- " 'offset': 0,\n",
1102
- " 'user': None,\n",
1103
- " 'format': 'json',\n",
1104
- " 'drs': ['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'],\n",
1105
- " 'private_drs': ['SDSS-DR17'],\n",
1106
- " 'username': 'Anonymous',\n",
1107
- " 'json_payload': {'outfields': ['sparcl_id',\n",
1108
- " 'specid',\n",
1109
- " 'ra',\n",
1110
- " 'dec',\n",
1111
- " 'redshift',\n",
1112
- " 'spectype',\n",
1113
- " 'data_release',\n",
1114
- " 'redshift_err'],\n",
1115
- " 'search': [['spectype', 'GALAXY'],\n",
1116
- " ['redshift', 0.5, 0.9]]}},\n",
1117
- " 'HEADER': {'spectype': 'category',\n",
1118
- " 'specid': 'np.int64',\n",
1119
- " 'sparcl_id': 'str',\n",
1120
- " 'redshift_err': 'np.float64',\n",
1121
- " 'redshift': 'np.float64',\n",
1122
- " 'data_release': 'category',\n",
1123
- " 'dec': 'np.float64',\n",
1124
- " 'ra': 'np.float64'},\n",
1125
- " 'WARNINGS': ['OFFSET parameter needs SORT but it was not provided. Using '\n",
1126
- " \"default 'sparcl_id' for sorting\"]}\n",
1436
+ "Logged in successfully with email='test_user_3@noirlab.edu'\n",
1437
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1438
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': []}\n",
1439
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1440
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
1127
1441
  "\n",
1128
- "FOUND records. found.records[0]={'spectype': 'GALAXY', 'specid': 39627072179543889, 'sparcl_id': '2f79ffc2-71fa-11ee-b0da-08002725f1ef', 'redshift_err': 0.0001345702651861459, 'redshift': 0.6348533970651531, 'data_release': 'DESI-EDR', 'dec': -31.05971652239488, 'ra': 59.93519495098703, '_dr': 'DESI-EDR'}\n"
1442
+ "SUCCESS: found.count=2 records from FIND: user='test_user_3@noirlab.edu'; drs=None\n"
1129
1443
  ]
1130
1444
  }
1131
1445
  ],
1132
1446
  "source": [
1133
- "# Default Dataset list\n",
1134
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
1135
- "cons = {'spectype': ['GALAXY'],\n",
1136
- " 'redshift': [0.5, 0.9],\n",
1137
- " #'data_release': ['BOSS-DR16',priv_dr]}\n",
1138
- " }\n",
1139
- "try:\n",
1140
- " found = client.find(outfields=out, constraints=cons, limit=2)\n",
1141
- " print('FOUND info:')\n",
1142
- " pp(found.info)\n",
1143
- " print(f'\\nFOUND records. {found.records[0]=}')\n",
1144
- " gotrecord = True\n",
1145
- "except Exception as err:\n",
1146
- " gotrecord = False\n",
1147
- " print(f'\\nSUCCESS: Could not execute find: {err}')\n",
1148
- "\n",
1149
- "if not gotrecord:\n",
1150
- " raise Exception(f'\\nFailed to get record from default DR list as Anonymous.')"
1447
+ "pass_find(non_user, None)"
1151
1448
  ]
1152
1449
  },
1153
1450
  {
1154
1451
  "cell_type": "markdown",
1155
1452
  "metadata": {},
1156
1453
  "source": [
1157
- "### Fail FIND with prviate DR as Unauthorized"
1454
+ "### Fail FIND as Unknown with Priv&Pub DRs"
1158
1455
  ]
1159
1456
  },
1160
1457
  {
1161
1458
  "cell_type": "code",
1162
1459
  "execution_count": 35,
1163
- "metadata": {},
1460
+ "metadata": {
1461
+ "tags": []
1462
+ },
1164
1463
  "outputs": [
1165
1464
  {
1166
1465
  "name": "stdout",
1167
1466
  "output_type": "stream",
1168
1467
  "text": [
1169
- "Logged in successfully with email='test_user_2@noirlab.edu'\n"
1468
+ "Logged in successfully with email='test_user_3@noirlab.edu'\n",
1469
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1470
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'BOSS-DR16', 'SDSS-DR17-test']]}\n",
1471
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"BOSS-DR16\", \"SDSS-DR17-test\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1472
+ "Exception: response content=b'{\"errorMessage\": \"ANONYMOUS is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1473
+ "\n",
1474
+ "SUCCESS: Find did not get records. \n",
1475
+ "[UNKNOWN] ANONYMOUS is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1170
1476
  ]
1171
1477
  }
1172
1478
  ],
1173
1479
  "source": [
1174
- "client.login(unauth_user, usrpw)"
1480
+ "fail_find(non_user, [pub_dr,priv_dr])"
1481
+ ]
1482
+ },
1483
+ {
1484
+ "cell_type": "markdown",
1485
+ "metadata": {},
1486
+ "source": [
1487
+ "### Pass FIND as Anonymous with Default DR list \n",
1488
+ "DRs default to only what are authorized for authenticated user."
1175
1489
  ]
1176
1490
  },
1177
1491
  {
1178
1492
  "cell_type": "code",
1179
1493
  "execution_count": 36,
1180
- "metadata": {},
1494
+ "metadata": {
1495
+ "tags": []
1496
+ },
1181
1497
  "outputs": [
1182
1498
  {
1183
1499
  "name": "stdout",
1184
1500
  "output_type": "stream",
1185
1501
  "text": [
1186
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR17\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1187
- "SUCCESS: Could not execute find: [UNKNOWN] uname='test_user_2@noirlab.edu' is declined access to datasets: SDSS-DR17. drs_requested={'SDSS-DR17', 'BOSS-DR16'} my_auth={'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'} [NODRACCESS] None\n"
1502
+ "Logged-out successfully. Previously logged-in with email test_user_3@noirlab.edu.\n",
1503
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1504
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': []}\n",
1505
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1506
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
1507
+ "\n",
1508
+ "SUCCESS: found.count=2 records from FIND: user=None; drs=None\n"
1188
1509
  ]
1189
1510
  }
1190
1511
  ],
1191
1512
  "source": [
1192
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
1193
- "cons = {'spectype': ['GALAXY'],\n",
1194
- " 'redshift': [0.5, 0.9],\n",
1195
- " 'data_release': ['BOSS-DR16',priv_dr]\n",
1196
- " }\n",
1197
- "try:\n",
1198
- " found = client.find(outfields=out, constraints=cons, limit=2)\n",
1199
- " print('FOUND info:')\n",
1200
- " pp(found.info)\n",
1201
- " print(f'\\nFOUND records. {found.records[0]=}')\n",
1202
- " gotrecord = True\n",
1203
- "except Exception as err:\n",
1204
- " gotrecord = False\n",
1205
- " print(f'SUCCESS: Could not execute find: {err}')\n",
1206
- "\n",
1207
- "if gotrecord:\n",
1208
- " raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
1513
+ "pass_find(None, None)"
1209
1514
  ]
1210
1515
  },
1211
1516
  {
1212
1517
  "cell_type": "markdown",
1213
1518
  "metadata": {},
1214
1519
  "source": [
1215
- "### Pass FIND with prviate DR as Authorized"
1520
+ "### Pass FIND as Anonymous with Public DR"
1216
1521
  ]
1217
1522
  },
1218
1523
  {
1219
1524
  "cell_type": "code",
1220
1525
  "execution_count": 37,
1221
- "metadata": {},
1526
+ "metadata": {
1527
+ "tags": []
1528
+ },
1222
1529
  "outputs": [
1223
1530
  {
1224
1531
  "name": "stdout",
1225
1532
  "output_type": "stream",
1226
1533
  "text": [
1227
- "Logged in successfully with email='test_user_1@noirlab.edu'\n"
1534
+ "Logged-out successfully. Previously logged-in with email None.\n",
1535
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1536
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'BOSS-DR16']]}\n",
1537
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1538
+ "Record key counts: {'data_release': 2, 'sparcl_id': 2, '_dr': 2}\n",
1539
+ "\n",
1540
+ "SUCCESS: found.count=2 records from FIND: user=None; drs=['BOSS-DR16']\n"
1228
1541
  ]
1229
1542
  }
1230
1543
  ],
1231
1544
  "source": [
1232
- "client.login(auth_user, usrpw)"
1545
+ "pass_find(None, [pub_dr])"
1546
+ ]
1547
+ },
1548
+ {
1549
+ "cell_type": "markdown",
1550
+ "metadata": {},
1551
+ "source": [
1552
+ "### Fail FIND as Anonymous with Priv&Pub DRs"
1233
1553
  ]
1234
1554
  },
1235
1555
  {
1236
1556
  "cell_type": "code",
1237
1557
  "execution_count": 38,
1238
- "metadata": {},
1558
+ "metadata": {
1559
+ "scrolled": true,
1560
+ "tags": []
1561
+ },
1239
1562
  "outputs": [
1240
1563
  {
1241
- "data": {
1242
- "text/plain": [
1243
- "{'Loggedin_As': 'test_user_1@noirlab.edu',\n",
1244
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
1245
- ]
1246
- },
1247
- "execution_count": 38,
1248
- "metadata": {},
1249
- "output_type": "execute_result"
1564
+ "name": "stdout",
1565
+ "output_type": "stream",
1566
+ "text": [
1567
+ "Logged-out successfully. Previously logged-in with email None.\n",
1568
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1569
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'BOSS-DR16', 'SDSS-DR17-test']]}\n",
1570
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"BOSS-DR16\", \"SDSS-DR17-test\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1571
+ "Exception: response content=b'{\"errorMessage\": \"ANONYMOUS is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1572
+ "\n",
1573
+ "SUCCESS: Find did not get records. \n",
1574
+ "[UNKNOWN] ANONYMOUS is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1575
+ ]
1250
1576
  }
1251
1577
  ],
1252
1578
  "source": [
1253
- "client.authorized"
1579
+ "fail_find(None, [pub_dr, priv_dr])"
1580
+ ]
1581
+ },
1582
+ {
1583
+ "cell_type": "markdown",
1584
+ "metadata": {},
1585
+ "source": [
1586
+ "## RETRIEVE"
1254
1587
  ]
1255
1588
  },
1256
1589
  {
1257
1590
  "cell_type": "code",
1258
1591
  "execution_count": 39,
1259
- "metadata": {},
1592
+ "metadata": {
1593
+ "scrolled": true
1594
+ },
1260
1595
  "outputs": [
1261
1596
  {
1262
1597
  "name": "stdout",
1263
1598
  "output_type": "stream",
1264
1599
  "text": [
1265
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1266
- "FOUND info:\n",
1267
- "{'META': {'endpoint': 'sparc/find'},\n",
1268
- " 'PARAMETERS': {'limit': 2,\n",
1269
- " 'include': 'dec,ra,sparcl_id,specid',\n",
1270
- " 'offset': 0,\n",
1271
- " 'format': 'json',\n",
1272
- " 'drs': ['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'],\n",
1273
- " 'private_drs': ['SDSS-DR17'],\n",
1274
- " 'username': 'test_user_1@noirlab.edu',\n",
1275
- " 'json_payload': {'outfields': ['sparcl_id',\n",
1276
- " 'specid',\n",
1277
- " 'ra',\n",
1278
- " 'dec',\n",
1279
- " 'redshift',\n",
1280
- " 'spectype',\n",
1281
- " 'data_release',\n",
1282
- " 'redshift_err'],\n",
1283
- " 'search': [['spectype', 'GALAXY'],\n",
1284
- " ['redshift', 0.5, 0.9]]}},\n",
1285
- " 'HEADER': {'spectype': 'category',\n",
1286
- " 'specid': 'np.int64',\n",
1287
- " 'sparcl_id': 'str',\n",
1288
- " 'redshift_err': 'np.float64',\n",
1289
- " 'redshift': 'np.float64',\n",
1290
- " 'data_release': 'category',\n",
1291
- " 'dec': 'np.float64',\n",
1292
- " 'ra': 'np.float64'},\n",
1293
- " 'WARNINGS': ['OFFSET parameter needs SORT but it was not provided. Using '\n",
1294
- " \"default 'sparcl_id' for sorting\"]}\n"
1600
+ "client=(sparclclient:1.2.2b8, api:11.0, http://localhost:8050/sparc, client_hash=f7bd410278bee26a425387c598dd47e80a8fcdcb, verbose=True, connect_timeout=1.1, read_timeout=5400.0)\n"
1295
1601
  ]
1296
1602
  }
1297
1603
  ],
1298
1604
  "source": [
1299
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
1300
- "cons = {'spectype': ['GALAXY'],\n",
1301
- " 'redshift': [0.5, 0.9],\n",
1302
- " #'data_release': ['BOSS-DR16',priv_dr]}\n",
1303
- " }\n",
1304
- "found = client.find(outfields=out, constraints=cons, limit=2)\n",
1305
- "print('FOUND info:')\n",
1306
- "pp(found.info)"
1605
+ "print(f'{client=}')\n",
1606
+ "inc = ['sparcl_id', 'data_release']\n",
1607
+ "\n",
1608
+ "#pub_ids = client.find(constraints=dict(data_release=[pub_dr]),limit=2).ids\n",
1609
+ "#print(f'{pub_ids=}')\n",
1610
+ "#priv_ids = client.find(constraints=dict(data_release=[priv_dr]),limit=2).ids\n",
1611
+ "#print(f'{priv_ids=}')\n",
1612
+ "\n",
1613
+ "def pass_retrieve(user, drs):\n",
1614
+ " client.login(user, usrpw)\n",
1615
+ " print(f'{client.authorized=}')\n",
1616
+ "\n",
1617
+ " if drs is None:\n",
1618
+ " ids = client.find(outfields=['sparcl_id'], limit=2).ids\n",
1619
+ " else:\n",
1620
+ " ids = client.find(outfields=['sparcl_id'], constraints=dict(data_release=drs), limit=2).ids\n",
1621
+ " try:\n",
1622
+ " if drs is None:\n",
1623
+ " got = client.retrieve(uuid_list=ids, include=inc, limit=2)\n",
1624
+ " else:\n",
1625
+ " got = client.retrieve(uuid_list=ids, include=inc, dataset_list=drs, limit=2)\n",
1626
+ " print(f'\\nSUCCESS: {got.count=} records from RETRIEVE: {user=}; {drs=}')\n",
1627
+ " except Exception as err:\n",
1628
+ " raise Exception(f'Auth wrongly refused records from RETRIEVE: {user=}; {drs=}')\n",
1629
+ "\n",
1630
+ "def fail_retrieve(user, drs):\n",
1631
+ " client.login(user, usrpw)\n",
1632
+ " print(f'{client.authorized=}')\n",
1633
+ "\n",
1634
+ " try:\n",
1635
+ " found = client.find(outfields=out, constraints=dict(data_release=drs), limit=2)\n",
1636
+ " raise Exception(f'Auth wrongly got {found.count} records in RETRIEVE: {user=}; {drs=}')\n",
1637
+ " except Exception as err:\n",
1638
+ " print(f'\\nSUCCESS: RETRIEVE did not get records. \\n{err}')"
1307
1639
  ]
1308
1640
  },
1309
1641
  {
1310
1642
  "cell_type": "markdown",
1311
1643
  "metadata": {},
1312
1644
  "source": [
1313
- "### Fail FIND with Unknown user\n",
1314
- "User is authenticated with SSO, but is unknown to SPARCL"
1645
+ "### Pass RETRIEVE as Auth with Default DRs"
1315
1646
  ]
1316
1647
  },
1317
1648
  {
1318
1649
  "cell_type": "code",
1319
1650
  "execution_count": 40,
1320
- "metadata": {},
1651
+ "metadata": {
1652
+ "tags": []
1653
+ },
1321
1654
  "outputs": [
1322
1655
  {
1323
1656
  "name": "stdout",
1324
1657
  "output_type": "stream",
1325
1658
  "text": [
1326
- "Logged in successfully with email='test_user_3@noirlab.edu'\n"
1659
+ "Logged in successfully with email='test_user_1@noirlab.edu'\n",
1660
+ "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16', 'SDSS-DR17-test'}}\n",
1661
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': []}\n",
1662
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1663
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1664
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl\"\n",
1665
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"000923d5-fe87-11ee-acd2-08002725f1ef\", \"0016db04-fe87-11ee-a58b-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl' | python3 -m json.tool\n",
1666
+ "Got response to post in 0.23809996293857694 seconds\n",
1667
+ "Got 2 spectra in 0.24 seconds (8 spectra/sec)\n",
1668
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list={'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}\"], 'warnings': []}\n",
1669
+ "\n",
1670
+ "SUCCESS: found.count=20 records from RETRIEVE: user='test_user_1@noirlab.edu'; drs=None\n"
1327
1671
  ]
1328
1672
  }
1329
1673
  ],
1330
1674
  "source": [
1331
- "client.login(non_user, usrpw)"
1675
+ "pass_retrieve(auth_user, None)"
1676
+ ]
1677
+ },
1678
+ {
1679
+ "cell_type": "markdown",
1680
+ "metadata": {},
1681
+ "source": [
1682
+ "### Pass RETRIEVE as Auth with Priv&Pub DRs"
1332
1683
  ]
1333
1684
  },
1334
1685
  {
@@ -1337,241 +1688,285 @@
1337
1688
  "metadata": {},
1338
1689
  "outputs": [
1339
1690
  {
1340
- "data": {
1341
- "text/plain": [
1342
- "{'Loggedin_As': 'Anonymous',\n",
1343
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}}"
1344
- ]
1345
- },
1346
- "execution_count": 41,
1347
- "metadata": {},
1348
- "output_type": "execute_result"
1691
+ "name": "stdout",
1692
+ "output_type": "stream",
1693
+ "text": [
1694
+ "Logged in successfully with email='test_user_1@noirlab.edu'\n",
1695
+ "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16', 'SDSS-DR17-test'}}\n",
1696
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': [['data_release', 'SDSS-DR17-test', 'BOSS-DR16']]}\n",
1697
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": [[\"data_release\", \"SDSS-DR17-test\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1698
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1699
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl&dataset_list=SDSS-DR17-test%2CBOSS-DR16\"\n",
1700
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"510760cd-fe87-11ee-8470-08002725f1ef\", \"5111ce02-fe87-11ee-bea1-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl&dataset_list=SDSS-DR17-test%2CBOSS-DR16' | python3 -m json.tool\n",
1701
+ "Got response to post in 0.27477827202528715 seconds\n",
1702
+ "Got 2 spectra in 0.27 seconds (7 spectra/sec)\n",
1703
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list=['SDSS-DR17-test', 'BOSS-DR16']\"], 'warnings': []}\n",
1704
+ "\n",
1705
+ "SUCCESS: found.count=20 records from RETRIEVE: user='test_user_1@noirlab.edu'; drs=['SDSS-DR17-test', 'BOSS-DR16']\n"
1706
+ ]
1349
1707
  }
1350
1708
  ],
1351
1709
  "source": [
1352
- "client.authorized"
1710
+ "pass_retrieve(auth_user, [priv_dr, pub_dr])"
1711
+ ]
1712
+ },
1713
+ {
1714
+ "cell_type": "markdown",
1715
+ "metadata": {},
1716
+ "source": [
1717
+ "### Pass RETRIEVE as Unauth with Default DRs\n",
1718
+ "DRs default to only what are authorized for authenticated user."
1353
1719
  ]
1354
1720
  },
1355
1721
  {
1356
1722
  "cell_type": "code",
1357
1723
  "execution_count": 42,
1358
- "metadata": {},
1724
+ "metadata": {
1725
+ "tags": []
1726
+ },
1359
1727
  "outputs": [
1360
1728
  {
1361
1729
  "name": "stdout",
1362
1730
  "output_type": "stream",
1363
1731
  "text": [
1364
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"specid\", \"ra\", \"dec\", \"redshift\", \"spectype\", \"data_release\", \"redshift_err\"], \"search\": [[\"spectype\", \"GALAXY\"], [\"redshift\", 0.5, 0.9], [\"data_release\", \"BOSS-DR16\", \"SDSS-DR17\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1365
- "SUCCESS: Could not execute find: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. drs_requested={'SDSS-DR17', 'BOSS-DR16'} my_auth={'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'} [NODRACCESS] None\n"
1732
+ "Logged in successfully with email='test_user_2@noirlab.edu'\n",
1733
+ "client.authorized={'Loggedin_As': 'test_user_2@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1734
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': []}\n",
1735
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1736
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1737
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl\"\n",
1738
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"000923d5-fe87-11ee-acd2-08002725f1ef\", \"0016db04-fe87-11ee-a58b-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl' | python3 -m json.tool\n",
1739
+ "Got response to post in 0.26971720601432025 seconds\n",
1740
+ "Got 2 spectra in 0.27 seconds (7 spectra/sec)\n",
1741
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list={'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}\"], 'warnings': []}\n",
1742
+ "\n",
1743
+ "SUCCESS: found.count=20 records from RETRIEVE: user='test_user_2@noirlab.edu'; drs=None\n"
1366
1744
  ]
1367
1745
  }
1368
1746
  ],
1369
1747
  "source": [
1370
- "out = ['sparcl_id','specid', 'ra', 'dec', 'redshift', 'spectype', 'data_release', 'redshift_err']\n",
1371
- "cons = {'spectype': ['GALAXY'],\n",
1372
- " 'redshift': [0.5, 0.9],\n",
1373
- " 'data_release': ['BOSS-DR16',priv_dr]\n",
1374
- " }\n",
1375
1748
  "try:\n",
1376
- " found = client.find(outfields=out, constraints=cons, limit=2)\n",
1377
- " print('FOUND info:')\n",
1378
- " pp(found.info)\n",
1379
- " print(f'\\nFOUND records. {found.records[0]=}')\n",
1380
- " gotrecord = True\n",
1749
+ " pass_retrieve(unauth_user, None)\n",
1381
1750
  "except Exception as err:\n",
1382
- " gotrecord = False\n",
1383
- " print(f'SUCCESS: Could not execute find: {err}')\n",
1384
- "\n",
1385
- "if gotrecord:\n",
1386
- " raise Exception(f'Wrongly got {found.count} records from {priv_dr=}')"
1387
- ]
1388
- },
1389
- {
1390
- "cell_type": "markdown",
1391
- "metadata": {},
1392
- "source": [
1393
- "## RETRIEVE"
1751
+ " display(Markdown(f'#### BUG: {str(err)}'))"
1394
1752
  ]
1395
1753
  },
1396
1754
  {
1397
1755
  "cell_type": "markdown",
1398
1756
  "metadata": {},
1399
1757
  "source": [
1400
- "### Pass RETRIEVE with public DRs as Anonymous"
1758
+ "### Fail RETRIEVE as Unauth with Priv&Pub DRs"
1401
1759
  ]
1402
1760
  },
1403
1761
  {
1404
1762
  "cell_type": "code",
1405
1763
  "execution_count": 43,
1406
- "metadata": {},
1764
+ "metadata": {
1765
+ "scrolled": true
1766
+ },
1407
1767
  "outputs": [
1408
1768
  {
1409
- "data": {
1410
- "text/plain": [
1411
- "{'Loggedin_As': 'Anonymous',\n",
1412
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}}"
1413
- ]
1414
- },
1415
- "execution_count": 43,
1416
- "metadata": {},
1417
- "output_type": "execute_result"
1769
+ "name": "stdout",
1770
+ "output_type": "stream",
1771
+ "text": [
1772
+ "Logged in successfully with email='test_user_2@noirlab.edu'\n",
1773
+ "client.authorized={'Loggedin_As': 'test_user_2@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1774
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'SDSS-DR17-test', 'BOSS-DR16']]}\n",
1775
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"SDSS-DR17-test\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1776
+ "Exception: response content=b'{\"errorMessage\": \"test_user_2@noirlab.edu is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1777
+ "\n",
1778
+ "SUCCESS: RETRIEVE did not get records. \n",
1779
+ "[UNKNOWN] test_user_2@noirlab.edu is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1780
+ ]
1418
1781
  }
1419
1782
  ],
1420
1783
  "source": [
1421
- "client.authorized"
1784
+ "fail_retrieve(unauth_user, [priv_dr, pub_dr])"
1785
+ ]
1786
+ },
1787
+ {
1788
+ "cell_type": "markdown",
1789
+ "metadata": {},
1790
+ "source": [
1791
+ "### Pass RETRIEVE as Unknown with Default DRs\n",
1792
+ "DRs default to only what are authorized for authenticated user."
1422
1793
  ]
1423
1794
  },
1424
1795
  {
1425
1796
  "cell_type": "code",
1426
1797
  "execution_count": 44,
1427
- "metadata": {},
1798
+ "metadata": {
1799
+ "tags": []
1800
+ },
1428
1801
  "outputs": [
1429
1802
  {
1430
1803
  "name": "stdout",
1431
1804
  "output_type": "stream",
1432
1805
  "text": [
1433
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": [[\"data_release\", \"SDSS-DR16\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1434
- "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"1ec5eb87-c678-4a17-9fec-2fe2982e24b0\", \"bb3d4287-8a2f-479f-9c7f-1053051e4925\"]' 'http://localhost:8050/sparc/spectras/?include=spectype%2Cspecid%2Cdata_release%2Cflux%2Credshift&format=pkl&dataset_list=SDSS-DR16%2CBOSS-DR16' | python3 -m json.tool\n",
1435
- "Pass: got.records[0].spectype='GALAXY' len(got.records[0].flux)=4621\n"
1806
+ "Logged in successfully with email='test_user_3@noirlab.edu'\n",
1807
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1808
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': []}\n",
1809
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1810
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1811
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl\"\n",
1812
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"000923d5-fe87-11ee-acd2-08002725f1ef\", \"0016db04-fe87-11ee-a58b-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl' | python3 -m json.tool\n",
1813
+ "Got response to post in 0.3079184840898961 seconds\n",
1814
+ "Got 2 spectra in 0.31 seconds (6 spectra/sec)\n",
1815
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list={'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}\"], 'warnings': []}\n",
1816
+ "\n",
1817
+ "SUCCESS: found.count=20 records from RETRIEVE: user='test_user_3@noirlab.edu'; drs=None\n"
1436
1818
  ]
1437
1819
  }
1438
1820
  ],
1439
1821
  "source": [
1440
- "inc = ['specid', 'data_release', 'redshift', 'flux', 'spectype']\n",
1441
- "drs = ['SDSS-DR16','BOSS-DR16']\n",
1442
- "found = client.find(outfields=['sparcl_id'], constraints=dict(data_release=drs),limit=2)\n",
1443
- "\n",
1444
1822
  "try:\n",
1445
- " got = client.retrieve(uuid_list=found.ids,\n",
1446
- " include=inc,\n",
1447
- " dataset_list=drs)\n",
1448
- " gotrecord = True\n",
1823
+ " pass_retrieve(non_user, None)\n",
1449
1824
  "except Exception as err:\n",
1450
- " gotrecord = False\n",
1451
- "\n",
1452
- "if gotrecord:\n",
1453
- " print(f'Pass: {got.records[0].spectype=} {len(got.records[0].flux)=}')\n",
1454
- "else:\n",
1455
- " print(f'Failed: {err=}')"
1825
+ " display(Markdown(f'#### BUG: {str(err)}'))"
1456
1826
  ]
1457
1827
  },
1458
1828
  {
1459
1829
  "cell_type": "markdown",
1460
1830
  "metadata": {},
1461
1831
  "source": [
1462
- "### Fail RETRIEVE with private DR as Anonymous"
1832
+ "### Fail RETRIEVE as Unknown with Priv&Pub DRs"
1463
1833
  ]
1464
1834
  },
1465
1835
  {
1466
1836
  "cell_type": "code",
1467
1837
  "execution_count": 45,
1468
- "metadata": {},
1838
+ "metadata": {
1839
+ "scrolled": true
1840
+ },
1469
1841
  "outputs": [
1470
1842
  {
1471
1843
  "name": "stdout",
1472
1844
  "output_type": "stream",
1473
1845
  "text": [
1474
- "Logged-out successfully. Previously logged-in with email test_user_3@noirlab.edu.\n",
1475
- "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"1ec5eb87-c678-4a17-9fec-2fe2982e24b0\", \"bb3d4287-8a2f-479f-9c7f-1053051e4925\"]' 'http://localhost:8050/sparc/spectras/?include=spectype%2Cspecid%2Cdata_release%2Cflux%2Credshift&format=pkl&dataset_list=SDSS-DR16%2CSDSS-DR17%2CBOSS-DR16' | python3 -m json.tool\n",
1476
- "Correctly could not retrieve: [UNKNOWN] uname='ANONYMOUS' is declined access to datasets: SDSS-DR17. drs_requested=['SDSS-DR16', 'SDSS-DR17', 'BOSS-DR16'] my_auth={'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'} [NODRACCESS] None\n"
1846
+ "Logged in successfully with email='test_user_3@noirlab.edu'\n",
1847
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1848
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'SDSS-DR17-test', 'BOSS-DR16']]}\n",
1849
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"SDSS-DR17-test\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1850
+ "Exception: response content=b'{\"errorMessage\": \"ANONYMOUS is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1851
+ "\n",
1852
+ "SUCCESS: RETRIEVE did not get records. \n",
1853
+ "[UNKNOWN] ANONYMOUS is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1477
1854
  ]
1478
1855
  }
1479
1856
  ],
1480
1857
  "source": [
1481
- "client.logout()\n",
1482
- "try:\n",
1483
- " got = client.retrieve(uuid_list=found.ids,\n",
1484
- " include=inc,\n",
1485
- " dataset_list=['SDSS-DR16',priv_dr,'BOSS-DR16'])\n",
1486
- " gotrecord = True\n",
1487
- "except Exception as err:\n",
1488
- " gotrecord = False\n",
1489
- " print(f'Correctly could not retrieve: {err}')\n",
1490
- "\n",
1491
- "if gotrecord:\n",
1492
- " raise Exception('Wrongly got record from PRIVATE DR {priv_dr}')"
1858
+ "fail_retrieve(non_user, [priv_dr, pub_dr])"
1493
1859
  ]
1494
1860
  },
1495
1861
  {
1496
1862
  "cell_type": "markdown",
1497
1863
  "metadata": {},
1498
1864
  "source": [
1499
- "### Pass RETRIEVE with private DRs as Authorized"
1865
+ "### Pass RETRIEVE as Anon with Default DRs\n",
1866
+ "DRs default to only what are authorized for authenticated user."
1500
1867
  ]
1501
1868
  },
1502
1869
  {
1503
1870
  "cell_type": "code",
1504
1871
  "execution_count": 46,
1505
- "metadata": {},
1872
+ "metadata": {
1873
+ "tags": []
1874
+ },
1506
1875
  "outputs": [
1507
1876
  {
1508
1877
  "name": "stdout",
1509
1878
  "output_type": "stream",
1510
1879
  "text": [
1511
- "Logged in successfully with email='test_user_1@noirlab.edu'\n"
1880
+ "Logged-out successfully. Previously logged-in with email test_user_3@noirlab.edu.\n",
1881
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1882
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': []}\n",
1883
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": []}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1884
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1885
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl\"\n",
1886
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"000923d5-fe87-11ee-acd2-08002725f1ef\", \"0016db04-fe87-11ee-a58b-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl' | python3 -m json.tool\n",
1887
+ "Got response to post in 0.03403094399254769 seconds\n",
1888
+ "Got 2 spectra in 0.03 seconds (59 spectra/sec)\n",
1889
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list={'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'}\"], 'warnings': []}\n",
1890
+ "\n",
1891
+ "SUCCESS: found.count=20 records from RETRIEVE: user=None; drs=None\n"
1512
1892
  ]
1513
1893
  }
1514
1894
  ],
1515
1895
  "source": [
1516
- "client.login(auth_user, usrpw)"
1896
+ "try:\n",
1897
+ " pass_retrieve(None, None)\n",
1898
+ "except Exception as err:\n",
1899
+ " display(Markdown(f'#### BUG: {str(err)}'))"
1900
+ ]
1901
+ },
1902
+ {
1903
+ "cell_type": "markdown",
1904
+ "metadata": {},
1905
+ "source": [
1906
+ "### Fail RETRIEVE as Anon with Priv&Pub DR "
1517
1907
  ]
1518
1908
  },
1519
1909
  {
1520
1910
  "cell_type": "code",
1521
1911
  "execution_count": 47,
1522
- "metadata": {},
1912
+ "metadata": {
1913
+ "tags": []
1914
+ },
1523
1915
  "outputs": [
1524
1916
  {
1525
- "data": {
1526
- "text/plain": [
1527
- "{'Loggedin_As': 'test_user_1@noirlab.edu',\n",
1528
- " 'Authorized_Datasets': {'BOSS-DR16', 'DESI-EDR', 'SDSS-DR16', 'SDSS-DR17'}}"
1529
- ]
1530
- },
1531
- "execution_count": 47,
1532
- "metadata": {},
1533
- "output_type": "execute_result"
1917
+ "name": "stdout",
1918
+ "output_type": "stream",
1919
+ "text": [
1920
+ "Logged-out successfully. Previously logged-in with email None.\n",
1921
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1922
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id', 'data_release'], 'search': [['data_release', 'SDSS-DR17-test', 'BOSS-DR16']]}\n",
1923
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\", \"data_release\"], \"search\": [[\"data_release\", \"SDSS-DR17-test\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1924
+ "Exception: response content=b'{\"errorMessage\": \"ANONYMOUS is declined access to datasets [\\'SDSS-DR17-test\\']; drs_requested=[\\'BOSS-DR16\\', \\'SDSS-DR17-test\\'] my_auth=[\\'BOSS-DR16\\', \\'DESI-EDR\\', \\'SDSS-DR16\\']\", \"errorCode\": \"NODRACCESS\", \"statusCode\": 400, \"saved_tb\": \"NoneType: None\\\\n\"}'\n",
1925
+ "\n",
1926
+ "SUCCESS: RETRIEVE did not get records. \n",
1927
+ "[UNKNOWN] ANONYMOUS is declined access to datasets ['SDSS-DR17-test']; drs_requested=['BOSS-DR16', 'SDSS-DR17-test'] my_auth=['BOSS-DR16', 'DESI-EDR', 'SDSS-DR16'] [NODRACCESS] None\n"
1928
+ ]
1534
1929
  }
1535
1930
  ],
1536
1931
  "source": [
1537
- "client.authorized"
1932
+ "fail_retrieve(None, [priv_dr, pub_dr])"
1933
+ ]
1934
+ },
1935
+ {
1936
+ "cell_type": "markdown",
1937
+ "metadata": {},
1938
+ "source": [
1939
+ "### Pass RETRIEVE as Anon with Public DR "
1538
1940
  ]
1539
1941
  },
1540
1942
  {
1541
1943
  "cell_type": "code",
1542
1944
  "execution_count": 48,
1543
- "metadata": {},
1945
+ "metadata": {
1946
+ "tags": []
1947
+ },
1544
1948
  "outputs": [
1545
1949
  {
1546
1950
  "name": "stdout",
1547
1951
  "output_type": "stream",
1548
1952
  "text": [
1549
- "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": [[\"data_release\", \"SDSS-DR16\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1550
- "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"1ec5eb87-c678-4a17-9fec-2fe2982e24b0\", \"bb3d4287-8a2f-479f-9c7f-1053051e4925\"]' 'http://localhost:8050/sparc/spectras/?include=spectype%2Cspecid%2Cdata_release%2Cflux%2Credshift&format=pkl&dataset_list=SDSS-DR16%2CSDSS-DR17%2CBOSS-DR16' | python3 -m json.tool\n",
1551
- "got.count=2\n",
1552
- "Pass: got.records[0].spectype='GALAXY' len(got.records[0].flux)=4621\n"
1953
+ "Logged-out successfully. Previously logged-in with email None.\n",
1954
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n",
1955
+ "url=http://localhost:8050/sparc/find/?limit=2 sspec={'outfields': ['sparcl_id'], 'search': [['data_release', 'BOSS-DR16']]}\n",
1956
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '{\"outfields\": [\"sparcl_id\"], \"search\": [[\"data_release\", \"BOSS-DR16\"]]}' 'http://localhost:8050/sparc/find/?limit=2' | python3 -m json.tool\n",
1957
+ "Record key counts: {'_dr': 2, 'sparcl_id': 2}\n",
1958
+ "Using url=\"http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl&dataset_list=BOSS-DR16\"\n",
1959
+ "curl -X 'POST' -H 'Content-Type: application/json' -d '[\"510760cd-fe87-11ee-8470-08002725f1ef\", \"5111ce02-fe87-11ee-bea1-08002725f1ef\"]' 'http://localhost:8050/sparc/spectras/?include=data_release%2Csparcl_id&format=pkl&dataset_list=BOSS-DR16' | python3 -m json.tool\n",
1960
+ "Got response to post in 0.0383652689633891 seconds\n",
1961
+ "Got 2 spectra in 0.04 seconds (52 spectra/sec)\n",
1962
+ "{'success': True, 'info': [\"Successfully found 2 records in dr_list=['BOSS-DR16']\"], 'warnings': []}\n",
1963
+ "\n",
1964
+ "SUCCESS: found.count=20 records from RETRIEVE: user=None; drs=['BOSS-DR16']\n"
1553
1965
  ]
1554
1966
  }
1555
1967
  ],
1556
1968
  "source": [
1557
- "inc = ['specid', 'data_release', 'redshift', 'flux', 'spectype']\n",
1558
- "drs = ['SDSS-DR16','BOSS-DR16']\n",
1559
- "found = client.find(outfields=['sparcl_id'], constraints=dict(data_release=drs),limit=2)\n",
1560
- "\n",
1561
- "try:\n",
1562
- " got = client.retrieve(uuid_list=found.ids,\n",
1563
- " include=inc,\n",
1564
- " dataset_list=['SDSS-DR16',priv_dr,'BOSS-DR16'])\n",
1565
- " gotrecord = True\n",
1566
- " print(f'{got.count=}')\n",
1567
- "except Exception as err:\n",
1568
- " gotrecord = False\n",
1569
- " msg = err\n",
1570
- " \n",
1571
- "if gotrecord:\n",
1572
- " print(f'Pass: {got.records[0].spectype=} {len(got.records[0].flux)=}')\n",
1573
- "else:\n",
1574
- " print(f'Failed: {msg}')"
1969
+ "pass_retrieve(None, [pub_dr])"
1575
1970
  ]
1576
1971
  },
1577
1972
  {
@@ -1584,13 +1979,15 @@
1584
1979
  {
1585
1980
  "cell_type": "code",
1586
1981
  "execution_count": 49,
1587
- "metadata": {},
1982
+ "metadata": {
1983
+ "tags": []
1984
+ },
1588
1985
  "outputs": [
1589
1986
  {
1590
1987
  "name": "stdout",
1591
1988
  "output_type": "stream",
1592
1989
  "text": [
1593
- "Run finished: 2024-03-06 07:12:30.513140\n"
1990
+ "Run finished: 2024-05-02 10:22:39.403970\n"
1594
1991
  ]
1595
1992
  }
1596
1993
  ],
@@ -1601,7 +1998,9 @@
1601
1998
  {
1602
1999
  "cell_type": "code",
1603
2000
  "execution_count": 50,
1604
- "metadata": {},
2001
+ "metadata": {
2002
+ "tags": []
2003
+ },
1605
2004
  "outputs": [
1606
2005
  {
1607
2006
  "name": "stdout",
@@ -1609,12 +2008,12 @@
1609
2008
  "text": [
1610
2009
  "Logged in successfully with email='test_user_1@noirlab.edu'\n",
1611
2010
  "\n",
1612
- "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR17', 'DESI-EDR', 'SDSS-DR16', 'BOSS-DR16'}}\n",
2011
+ "client.authorized={'Loggedin_As': 'test_user_1@noirlab.edu', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16', 'SDSS-DR17-test'}}\n",
1613
2012
  "\n",
1614
2013
  "\n",
1615
2014
  "Logged-out successfully. Previously logged-in with email test_user_1@noirlab.edu.\n",
1616
2015
  "\n",
1617
- "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'DESI-EDR', 'BOSS-DR16', 'SDSS-DR16'}}\n"
2016
+ "client.authorized={'Loggedin_As': 'Anonymous', 'Authorized_Datasets': {'SDSS-DR16', 'DESI-EDR', 'BOSS-DR16'}}\n"
1618
2017
  ]
1619
2018
  }
1620
2019
  ],
@@ -1625,13 +2024,6 @@
1625
2024
  "client.logout() # can also be done with client.login(None)\n",
1626
2025
  "print(f'\\n{client.authorized=}')"
1627
2026
  ]
1628
- },
1629
- {
1630
- "cell_type": "code",
1631
- "execution_count": null,
1632
- "metadata": {},
1633
- "outputs": [],
1634
- "source": []
1635
2027
  }
1636
2028
  ],
1637
2029
  "metadata": {