sparclclient 1.2.4b3__tar.gz → 1.2.5__tar.gz

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.
Files changed (39) hide show
  1. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/PKG-INFO +1 -1
  2. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/__init__.py +2 -1
  3. sparclclient-1.2.5/sparcl/benchmarks/Benchmark_SPARCL_example.ipynb +290 -0
  4. sparclclient-1.2.5/sparcl/benchmarks/sparcl_benchmarking.ipynb +789 -0
  5. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/client.py +8 -2
  6. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/exceptions.py +6 -0
  7. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tests/expected_pat.py +11 -8
  8. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tests/tests_api.py +13 -23
  9. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/.github/workflows/django.yml +0 -0
  10. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/.gitignore +0 -0
  11. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/.pre-commit-config.yaml +0 -0
  12. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/.readthedocs.yaml +0 -0
  13. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/LICENSE +0 -0
  14. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/Makefile +0 -0
  15. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/README.md +0 -0
  16. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/make.bat +0 -0
  17. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/pyproject.toml +0 -0
  18. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/requirements-client.txt +0 -0
  19. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/requirements-internal.txt +0 -0
  20. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/requirements.txt +0 -0
  21. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/source/conf.py +0 -0
  22. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/source/index.rst +0 -0
  23. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/source/sparcl.rst +0 -0
  24. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/Results.py +0 -0
  25. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/benchmarks/__init__.py +0 -0
  26. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/benchmarks/benchmarks.py +0 -0
  27. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/conf.py +0 -0
  28. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/fields.py +0 -0
  29. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/gather_2d.py +0 -0
  30. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/notebooks/sparcl-examples.ipynb +0 -0
  31. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/resample_spectra.py +0 -0
  32. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/sparc.ini +0 -0
  33. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/type_conversion.py +0 -0
  34. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/unsupported.py +0 -0
  35. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/sparcl/utils.py +0 -0
  36. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tests/expected_dev1.py +0 -0
  37. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tests/methods_tests.py +0 -0
  38. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tests/utils.py +0 -0
  39. {sparclclient-1.2.4b3 → sparclclient-1.2.5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sparclclient
3
- Version: 1.2.4b3
3
+ Version: 1.2.5
4
4
  Summary: A client for getting spectra and meta-data from NOIRLab.
5
5
  Author-email: "S. Pothier" <datalab-spectro@noirlab.edu>
6
6
  Description-Content-Type: text/markdown
@@ -33,4 +33,5 @@ __all__ = ["client", "align_records"]
33
33
  # FIRST uncommented value will be used! (so only leave one uncommented)
34
34
  #__version__ = "1.2.2"
35
35
  #__version__ = "1.2.3"
36
- __version__ = "1.2.4b3"
36
+ #__version__ = "1.2.4"
37
+ __version__ = "1.2.5"
@@ -0,0 +1,290 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "17a35c00-bc12-4a45-b883-762edde6f1ce",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Example Benchmarking for SPARCL"
9
+ ]
10
+ },
11
+ {
12
+ "cell_type": "code",
13
+ "execution_count": null,
14
+ "id": "7f33d932-4fbd-47e9-b390-316c00fcddad",
15
+ "metadata": {},
16
+ "outputs": [],
17
+ "source": [
18
+ "# import some helpful python packages \n",
19
+ "import numpy as np\n",
20
+ "import pandas as pd\n",
21
+ "import time\n",
22
+ "from astropy.table import Table\n",
23
+ "\n",
24
+ "import matplotlib.pyplot as plt\n",
25
+ "\n",
26
+ "## DataLab related modules\n",
27
+ "from sparcl.client import SparclClient\n",
28
+ "from dl import queryClient as qc"
29
+ ]
30
+ },
31
+ {
32
+ "cell_type": "code",
33
+ "execution_count": null,
34
+ "id": "8e5af373-bf6c-45d2-8a96-5a6b0c2a5a4d",
35
+ "metadata": {},
36
+ "outputs": [],
37
+ "source": [
38
+ "%%time\n",
39
+ "## Define here astrosparcl vs. astrosparcl2\n",
40
+ "client_astrosparcl = SparclClient()\n",
41
+ "client_astrosparcl2 = SparclClient(url='https://astrosparcl2.datalab.noirlab.edu')"
42
+ ]
43
+ },
44
+ {
45
+ "cell_type": "code",
46
+ "execution_count": null,
47
+ "id": "f72f1a5a-8b33-4edb-845c-300e277e6316",
48
+ "metadata": {},
49
+ "outputs": [],
50
+ "source": [
51
+ "client_astrosparcl"
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "code",
56
+ "execution_count": null,
57
+ "id": "54d1f19c-1772-4967-b45e-d2a17d549f7b",
58
+ "metadata": {},
59
+ "outputs": [],
60
+ "source": [
61
+ "client_astrosparcl2"
62
+ ]
63
+ },
64
+ {
65
+ "cell_type": "code",
66
+ "execution_count": null,
67
+ "id": "85a8075d-2b30-48e1-81bb-d75eceeb096f",
68
+ "metadata": {},
69
+ "outputs": [],
70
+ "source": [
71
+ "def run_desi_query(NN, randomid=[0,1]):\n",
72
+ "\n",
73
+ " # Query for DESI; keep only objects with a unique spectrum to avoid duplicates\n",
74
+ " query = f'''SELECT targetid FROM desi_dr1.zpix \n",
75
+ " WHERE zcat_nspec=1 AND random_id BETWEEN {randomid[0]} AND {randomid[1]} LIMIT {NN}'''\n",
76
+ "\n",
77
+ " t = qc.query(sql=query, fmt='table')\n",
78
+ "\n",
79
+ " return(t)"
80
+ ]
81
+ },
82
+ {
83
+ "cell_type": "code",
84
+ "execution_count": null,
85
+ "id": "85cc1d16-07a5-4d41-849e-572e277e4915",
86
+ "metadata": {},
87
+ "outputs": [],
88
+ "source": [
89
+ "def run_sdss_query(NN, randomid=[0,1]):\n",
90
+ "\n",
91
+ " # Query for SDSS; already unique per specobjid\n",
92
+ " query = f'''SELECT specobjid FROM sdss_dr16.specobj \n",
93
+ " WHERE random_id BETWEEN {randomid[0]} AND {randomid[1]} LIMIT {NN}'''\n",
94
+ "\n",
95
+ " t = qc.query(sql=query, fmt='table')\n",
96
+ "\n",
97
+ " return(t)"
98
+ ]
99
+ },
100
+ {
101
+ "cell_type": "code",
102
+ "execution_count": null,
103
+ "id": "06d97329-3fd7-41b2-a623-2373a4c876d0",
104
+ "metadata": {},
105
+ "outputs": [],
106
+ "source": [
107
+ "# Define the fields to include in the retrieve function (common to SDSS and DESI)\n",
108
+ "inc = ['specid', 'redshift', 'specprimary', 'wavelength', 'flux', 'ivar']"
109
+ ]
110
+ },
111
+ {
112
+ "cell_type": "code",
113
+ "execution_count": null,
114
+ "id": "f2620054-aa25-41e4-adc1-da37b78b5cc6",
115
+ "metadata": {},
116
+ "outputs": [],
117
+ "source": [
118
+ "def get_spec_timing(specids, dataset=['DESI-DR1']):\n",
119
+ "## Version for astrosparcl\n",
120
+ "## dataset = 'DESI-DR1' by default, can set 'SDSS-DR16' or others by request\n",
121
+ " \n",
122
+ " start_time = time.time()\n",
123
+ "\n",
124
+ " ## Retrieve spectra\n",
125
+ " results = client_astrosparcl.retrieve_by_specid(specid_list=specids, include=inc, dataset_list=dataset, limit=24000)\n",
126
+ " \n",
127
+ " ## Time rounded to 0.1 sec\n",
128
+ " duration = np.round((time.time() - start_time), 1)\n",
129
+ " print(f'Querying N={len(specids)}; retrieved N={results.count} in {duration} sec')\n",
130
+ "\n",
131
+ " ## save space\n",
132
+ " results = 0\n",
133
+ "\n",
134
+ " return(duration)"
135
+ ]
136
+ },
137
+ {
138
+ "cell_type": "code",
139
+ "execution_count": null,
140
+ "id": "8f7382a9-cb26-4a64-a848-ef85d7dc1756",
141
+ "metadata": {},
142
+ "outputs": [],
143
+ "source": [
144
+ "def get_spec_timing_2(specids, dataset=['DESI-DR1']):\n",
145
+ "## Version for astrosparcl2\n",
146
+ "## dataset = 'DESI-DR1' by default, can set 'SDSS-DR16' or others by request\n",
147
+ "\n",
148
+ " start_time = time.time()\n",
149
+ "\n",
150
+ " ## Retrieve spectra\n",
151
+ " results = client_astrosparcl2.retrieve_by_specid(specid_list=specids, include=inc, dataset_list=dataset, limit=24000)\n",
152
+ "\n",
153
+ " ## Time rounded to 0.1 sec\n",
154
+ " duration = np.round((time.time() - start_time), 1)\n",
155
+ " print(f'Querying N={len(specids)}; retrieved N={results.count} in {duration} sec')\n",
156
+ "\n",
157
+ " ## save space\n",
158
+ " results = 0\n",
159
+ "\n",
160
+ " return(duration)"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "code",
165
+ "execution_count": null,
166
+ "id": "65482bb6-d4f1-42ca-89a3-07e11f93fd2e",
167
+ "metadata": {},
168
+ "outputs": [],
169
+ "source": [
170
+ "# Define the Nb to retrieve\n",
171
+ "## Focus on small numbers up to 200\n",
172
+ "Ns = [1, 2, 4, 20, 40, 200] ##, 2000, 20000] # can extend to 24,000\n",
173
+ "\n",
174
+ "out = Table()\n",
175
+ "out['N'] = Ns\n",
176
+ "# astrosparcl\n",
177
+ "out['T_retrieve_DESI'] = 0.0\n",
178
+ "out['T_retrieve_SDSS'] = 0.0\n",
179
+ "# astrosparcl2\n",
180
+ "out['T2_retrieve_DESI'] = 0.0\n",
181
+ "out['T2_retrieve_SDSS'] = 0.0\n",
182
+ "\n",
183
+ "for i, N in enumerate(Ns):\n",
184
+ "\n",
185
+ " # Query for SDSS specobjid's\n",
186
+ " ## NOTE: need to change code for randomid for SDSS as fct(N bins) and sample size)\n",
187
+ " t_sdss = run_sdss_query(N) #, randomid=[0+i*0.1, 0.3+i*0.1])\n",
188
+ " ids = t_sdss['specobjid']\n",
189
+ " ids = ids.astype(int).tolist() \n",
190
+ "\n",
191
+ " # Call retrieve and check timing for SDSS\n",
192
+ " out['T_retrieve_SDSS'][i] = get_spec_timing(ids, dataset=['SDSS-DR16','BOSS-DR16'])\n",
193
+ " out['T2_retrieve_SDSS'][i] = get_spec_timing_2(ids, dataset=['SDSS-DR16','BOSS-DR16'])"
194
+ ]
195
+ },
196
+ {
197
+ "cell_type": "code",
198
+ "execution_count": null,
199
+ "id": "862e8456-d61b-43d1-bf8a-03507c76861b",
200
+ "metadata": {},
201
+ "outputs": [],
202
+ "source": [
203
+ "out"
204
+ ]
205
+ },
206
+ {
207
+ "cell_type": "code",
208
+ "execution_count": null,
209
+ "id": "0bb31825-4a4d-48dd-8e0a-074a41b8c58d",
210
+ "metadata": {},
211
+ "outputs": [],
212
+ "source": [
213
+ "for i, N in enumerate(Ns):\n",
214
+ " \n",
215
+ " # Query for DESI targetid's\n",
216
+ " t_desi = run_desi_query(N, randomid=[0+i*0.1, 0.1+i*0.1])\n",
217
+ " ids = t_desi['targetid']\n",
218
+ " ids = ids.astype(int).tolist()\n",
219
+ "\n",
220
+ " # Call retrieve and check timing\n",
221
+ " out['T_retrieve_DESI'][i] = get_spec_timing(ids)\n",
222
+ " out['T2_retrieve_DESI'][i] = get_spec_timing_2(ids)"
223
+ ]
224
+ },
225
+ {
226
+ "cell_type": "code",
227
+ "execution_count": null,
228
+ "id": "ab087231-5e31-4fa5-afa9-1d0361b9962a",
229
+ "metadata": {},
230
+ "outputs": [],
231
+ "source": [
232
+ "out"
233
+ ]
234
+ },
235
+ {
236
+ "cell_type": "code",
237
+ "execution_count": null,
238
+ "id": "990223ec-eaee-418f-bc7a-61120e33751f",
239
+ "metadata": {},
240
+ "outputs": [],
241
+ "source": [
242
+ "#out_save = out.copy()\n",
243
+ "#out_save"
244
+ ]
245
+ },
246
+ {
247
+ "cell_type": "code",
248
+ "execution_count": null,
249
+ "id": "43354fc9-6fa9-4186-89d7-792c240f3698",
250
+ "metadata": {},
251
+ "outputs": [],
252
+ "source": [
253
+ "#outfile = \"results_250616_astrosparcl.fits\"\n",
254
+ "#out_save['N','T_retrieve_DESI','T_retrieve_SDSS'].write(outfile, overwrite=False)"
255
+ ]
256
+ },
257
+ {
258
+ "cell_type": "code",
259
+ "execution_count": null,
260
+ "id": "a516ce42-82dc-4910-92c4-d2cb34fea012",
261
+ "metadata": {},
262
+ "outputs": [],
263
+ "source": [
264
+ "#outfile = \"results_250613_astrosparcl2.fits\"\n",
265
+ "#out_save['N','T2_retrieve_DESI','T2_retrieve_SDSS'].write(outfile, overwrite=False)"
266
+ ]
267
+ }
268
+ ],
269
+ "metadata": {
270
+ "kernelspec": {
271
+ "display_name": "Python 3 (ipykernel)",
272
+ "language": "python",
273
+ "name": "python3"
274
+ },
275
+ "language_info": {
276
+ "codemirror_mode": {
277
+ "name": "ipython",
278
+ "version": 3
279
+ },
280
+ "file_extension": ".py",
281
+ "mimetype": "text/x-python",
282
+ "name": "python",
283
+ "nbconvert_exporter": "python",
284
+ "pygments_lexer": "ipython3",
285
+ "version": "3.10.13"
286
+ }
287
+ },
288
+ "nbformat": 4,
289
+ "nbformat_minor": 5
290
+ }