Skip to content

Commit 636adf6

Browse files
Adrian DamianAdrian Damian
authored andcommitted
Changes to use the ALMA Datalink service
1 parent 2943b2e commit 636adf6

File tree

8 files changed

+560
-258
lines changed

8 files changed

+560
-258
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ alma
109109
- ALMA queries using string representations will now convert to appropriate
110110
coordinates before being sent to the server; previously they were treated as
111111
whatever unit they were presented in. [#1867]
112+
- Download mechanism uses the ALMA Datalink service that allows exploring and
113+
downloading entire tarball package files or just part of their content. [#1820]
112114

113115
gaia
114116
^^^^

astroquery/alma/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
'https://almascience.nrao.edu',
1212
'https://almascience.nao.ac.jp']
1313

14-
_test_url_list = ['https://almascience-dev.nrao.edu']
14+
_test_url_list = ['https://beta.cadc-ccda.hia-ha.nrc-cnrc.gc.ca']
1515

1616
auth_urls = ['asa.alma.cl', 'rh-cas.alma.cl']
1717

astroquery/alma/core.py

Lines changed: 246 additions & 194 deletions
Large diffs are not rendered by default.

astroquery/alma/tapsql.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,9 @@ def _gen_pub_sql(field, value):
210210

211211
def _gen_science_sql(field, value):
212212
if value is True:
213-
return "{}>1".format(field)
213+
return "{}='T'".format(field)
214+
elif value is False:
215+
return "{}='F'".format(field)
214216
else:
215217
return None
216218

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- Produced with astropy.io.votable version 4.0.1.post1
3+
http://www.astropy.org/ -->
4+
<VOTABLE version="1.4" xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ivoa.net/xml/VOTable/v1.4">
5+
<RESOURCE type="results">
6+
<TABLE ID="result">
7+
<FIELD ID="ID" arraysize="20" datatype="unicodeChar" name="ID" ucd="meta.id;meta.main"/>
8+
<FIELD ID="access_url" arraysize="113" datatype="unicodeChar" name="access_url" ucd="meta.ref.url"/>
9+
<FIELD ID="service_def" arraysize="1" datatype="unicodeChar" name="service_def" ucd="meta.ref"/>
10+
<FIELD ID="error_message" arraysize="1" datatype="unicodeChar" name="error_message" ucd="meta.code.error"/>
11+
<FIELD ID="semantics" arraysize="15" datatype="unicodeChar" name="semantics" ucd="meta.code"/>
12+
<FIELD ID="description" arraysize="1" datatype="unicodeChar" name="description" ucd="meta.note"/>
13+
<FIELD ID="content_type" arraysize="42" datatype="unicodeChar" name="content_type" ucd="meta.code.mime"/>
14+
<FIELD ID="content_length" datatype="long" name="content_length" ucd="phys.size;meta.file" unit="byte"/>
15+
<FIELD ID="readable" datatype="bit" name="readable">
16+
<DESCRIPTION>
17+
the caller is allowed to use this link with the current
18+
authenticated identity
19+
</DESCRIPTION>
20+
</FIELD>
21+
<DATA>
22+
<TABLEDATA>
23+
<TR>
24+
<TD>uid://A001/X12a3/Xe9</TD>
25+
<TD>https://almascience.eso.org/dataPortal/member.uid___A001_X12a3_Xe9.README.txt</TD>
26+
<TD/>
27+
<TD/>
28+
<TD>#auxiliary</TD>
29+
<TD/>
30+
<TD>text/plain</TD>
31+
<TD>258</TD>
32+
<TD>1</TD>
33+
</TR>
34+
<TR>
35+
<TD>uid://A001/X12a3/Xe9</TD>
36+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A001_X12a3_Xe9_001_of_001.tar</TD>
37+
<TD/>
38+
<TD/>
39+
<TD>#this</TD>
40+
<TD/>
41+
<TD>application/x-tar</TD>
42+
<TD>556278784</TD>
43+
<TD>1</TD>
44+
</TR>
45+
<TR>
46+
<TD>uid://A001/X12a3/Xe9</TD>
47+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A001_X12a3_Xe9_auxiliary.tar</TD>
48+
<TD/>
49+
<TD/>
50+
<TD>#auxiliary</TD>
51+
<TD/>
52+
<TD>application/x-tar</TD>
53+
<TD>134937600</TD>
54+
<TD>1</TD>
55+
</TR>
56+
<TR>
57+
<TD>uid://A001/X12a3/Xe9</TD>
58+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A002_Xd28a9e_X71b8.asdm.sdm.tar</TD>
59+
<TD/>
60+
<TD/>
61+
<TD>#progenitor</TD>
62+
<TD/>
63+
<TD>application/x-tar</TD>
64+
<TD>2342838272</TD>
65+
<TD>1</TD>
66+
</TR>
67+
<TR>
68+
<TD>uid://A001/X12a3/Xe9</TD>
69+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A002_Xd28a9e_X7b4d.asdm.sdm.tar</TD>
70+
<TD/>
71+
<TD/>
72+
<TD>#progenitor</TD>
73+
<TD/>
74+
<TD>application/x-tar</TD>
75+
<TD>2343136256</TD>
76+
<TD>1</TD>
77+
</TR>
78+
<TR>
79+
<TD>uid://A001/X12a3/Xe9</TD>
80+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A002_Xd29c1f_X1f74.asdm.sdm.tar</TD>
81+
<TD/>
82+
<TD/>
83+
<TD>#progenitor</TD>
84+
<TD/>
85+
<TD>application/x-tar</TD>
86+
<TD>2616060928</TD>
87+
<TD>1</TD>
88+
</TR>
89+
<TR>
90+
<TD>uid://A001/X12a3/Xe9</TD>
91+
<TD>https://almascience.eso.org/dataPortal/2017.1.01185.S_uid___A002_Xd29c1f_X5cf.asdm.sdm.tar</TD>
92+
<TD/>
93+
<TD/>
94+
<TD>#progenitor</TD>
95+
<TD/>
96+
<TD>application/x-tar</TD>
97+
<TD>2679361536</TD>
98+
<TD>1</TD>
99+
</TR>
100+
</TABLEDATA>
101+
</DATA>
102+
</TABLE>
103+
</RESOURCE>
104+
</VOTABLE>

astroquery/alma/tests/test_alma.py

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,11 @@ def test_gen_public_sql():
210210

211211
def test_gen_science_sql():
212212
common_select = 'select * from ivoa.obscore'
213-
assert _gen_sql({'science_observations': None}) == common_select
214-
assert _gen_sql({'science_observations': True}) == common_select +\
215-
" WHERE calib_level>1"
216-
assert _gen_sql({'science_observations': False}) == common_select
213+
assert _gen_sql({'science_observation': None}) == common_select
214+
assert _gen_sql({'science_observation': True}) == common_select +\
215+
" WHERE science_observation='T'"
216+
assert _gen_sql({'science_observation': False}) == common_select +\
217+
" WHERE science_observation='F'"
217218

218219

219220
def test_pol_sql():
@@ -250,7 +251,8 @@ def test_query():
250251
tap_mock.search.assert_called_once_with(
251252
"select * from ivoa.obscore WHERE "
252253
"(INTERSECTS(CIRCLE('ICRS',1.0,2.0,1.0), s_region) = 1) "
253-
"AND calib_level>1 AND data_rights='Public'", language='ADQL')
254+
"AND science_observation='T' AND data_rights='Public'",
255+
language='ADQL', maxrec=None)
254256

255257
# one row result
256258
tap_mock = Mock()
@@ -270,8 +272,9 @@ def test_query():
270272
tap_mock.search.assert_called_once_with(
271273
"select * from ivoa.obscore WHERE "
272274
"(INTERSECTS(CIRCLE('ICRS',1.0,2.0,0.16666666666666666), s_region) = 1) "
273-
"AND band_list LIKE '%3%' AND calib_level>1 AND data_rights='Proprietary'",
274-
band_list=[3], language='ADQL')
275+
"AND band_list LIKE '%3%' AND science_observation='T' AND "
276+
"data_rights='Proprietary'",
277+
language='ADQL', maxrec=None)
275278

276279
# repeat for legacy columns
277280
mock_result = Mock()
@@ -291,8 +294,9 @@ def test_query():
291294
tap_mock.search.assert_called_once_with(
292295
"select * from ivoa.obscore WHERE "
293296
"(INTERSECTS(CIRCLE('ICRS',1.0,2.0,0.16666666666666666), s_region) = 1) "
294-
"AND band_list LIKE '%3%' AND calib_level>1 AND data_rights='Proprietary'",
295-
band_list=[3], language='ADQL')
297+
"AND band_list LIKE '%3%' AND science_observation='T' AND "
298+
"data_rights='Proprietary'",
299+
language='ADQL', maxrec=None)
296300
row_legacy = result_legacy[0]
297301
row = result[0]
298302
for item in _OBSCORE_TO_ALMARESULT.items():
@@ -325,9 +329,8 @@ def test_query():
325329
"(INTERSECTS(CIRCLE('ICRS',1.0,2.0,1.0), s_region) = 1) AND "
326330
"(band_list LIKE '%1%' OR band_list LIKE '%3%') AND "
327331
"t_min=55197.0 AND pol_states='/XX/YY/' AND s_fov=0.012313 AND "
328-
"t_exptime=25", band_list='1 3',
329-
fov=0.012313, integration_time=25, language='ADQL',
330-
polarisation_type='Dual', start_date='01-01-2010'
332+
"t_exptime=25 AND science_observation='F'",
333+
language='ADQL', maxrec=None
331334
)
332335

333336

@@ -372,7 +375,22 @@ def test_tap():
372375
assert len(result.table) == 0
373376

374377
tap_mock.search.assert_called_once_with('select * from ivoa.ObsCore',
375-
language='ADQL')
378+
language='ADQL', maxrec=None)
379+
380+
381+
def test_get_data_info():
382+
datalink_mock = Mock()
383+
dl_result = Table.read(data_path('alma-datalink.xml'), format='votable')
384+
mock_response = Mock(table=dl_result)
385+
mock_response.status = ['OK']
386+
datalink_mock.run_sync.return_value = mock_response
387+
alma = Alma()
388+
alma._get_dataarchive_url = Mock()
389+
alma._datalink = datalink_mock
390+
result = alma.get_data_info(uids='uid://A001/X12a3/Xe9')
391+
assert len(result) == 7
392+
393+
datalink_mock.run_sync.assert_called_once_with('uid://A001/X12a3/Xe9')
376394

377395

378396
def test_galactic_query():

0 commit comments

Comments
 (0)