Skip to content

Commit 33ad514

Browse files
authored
Merge pull request #2998 from esdc-esac-esa-int/ESA_ehst-include_datalabs_path_in_astroquery_module
EHSTPCR-1144: Implemented the function get_datalabs_path along with the
2 parents d77dad2 + 8ef110a commit 33ad514

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

CHANGES.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ esa.hubble
205205
- New methods to retrieve metadata (``get_observations_from_program``) and
206206
files (``download_files_from_program``) associated to a proposal. [#2910]
207207

208+
- New method ``get_datalabs_path`` to return the complete path of a file in
209+
datalabs by combining the datalabs volume path with the path of the file
210+
in the table ehst.artifact [#2998]
211+
208212
esa.jwst
209213
^^^^^^^^
210214

astroquery/esa/hubble/core.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,5 +1003,37 @@ def _get_decoded_string(self, string):
10031003
except (UnicodeDecodeError, AttributeError):
10041004
return string
10051005

1006+
def get_datalabs_path(self, filename, default_volume=None):
1007+
"""Get the available columns for a table in EHST TAP service
1008+
1009+
Parameters
1010+
----------
1011+
filename : string, mandatory, default None
1012+
file name to search for its full path
1013+
default_volume : string, optional, default None
1014+
Default folder name in datalabs. If None, it is filled automatically
1015+
1016+
Returns
1017+
-------
1018+
The complete path of the file name in Datalabs
1019+
"""
1020+
1021+
query = f"select file_path from ehst.artifact where file_name = '{filename}'"
1022+
job = self.query_tap(query=query)
1023+
if job is None:
1024+
return None
1025+
1026+
# Output example for path: /hstdata/hstdata_i/i/b4x/04, or hstdata_i/i/b4x/04 for path_parsed
1027+
path = self._get_decoded_string(string=job["file_path"][0])
1028+
path_parsed = path.split("hstdata/", 1)[1]
1029+
1030+
# Automatic fill: convert /hstdata/hstdata_i/i/b4x/04 to /data/user/hub_hstdata_i/i/b4x/04
1031+
if default_volume is None:
1032+
return "/data/user/hub_" + path_parsed + "/" + filename
1033+
1034+
# Use the path provided by the user: convert /hstdata/hstdata_i/i/b4x/04 to /data/user/myPath/i/b4x/04
1035+
path_parsed = path_parsed.split("/", 1)[1]
1036+
return "/data/user/" + default_volume + "/" + path_parsed + "/" + filename
1037+
10061038

10071039
ESAHubble = ESAHubbleClass()

astroquery/esa/hubble/tests/test_esa_hubble.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,3 +751,12 @@ def test_show_messages(self, mock_conn, mock_res):
751751
mock_conn.getresponse = MagicMock(return_value=mock_res)
752752
ESAHubbleClass()
753753
mock_res.assert_called()
754+
755+
def test_get_datalabs_path(self):
756+
parameters = {'filename': "ib4x04ivq_flt.jpg",
757+
'default_volume': None}
758+
759+
dummyTapHandler = DummyHubbleTapHandler("get_datalabs_path", parameters)
760+
ehst = ESAHubbleClass(tap_handler=self.get_dummy_tap_handler(), show_messages=False)
761+
ehst.get_datalabs_path(filename="ib4x04ivq_flt.jpg", default_volume="")
762+
dummyTapHandler.check_call("get_datalabs_path", parameters)

astroquery/esa/hubble/tests/test_esa_hubble_remote.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,7 @@ def test_retrieve_fits_from_program(self):
129129
filters=['F814W/F450W'],
130130
folder=str(self.temp_folder_for_fits.name))
131131
assert len(os.listdir(self.temp_folder_for_fits.name)) > 0
132+
133+
def test_get_datalabs_path(self):
134+
result = esa_hubble.get_datalabs_path(filename='ib4x04ivq_flt.jpg', default_volume=None)
135+
assert result == '/data/user/hub_hstdata_i/i/b4x/04/ib4x04ivq_flt.jpg'

0 commit comments

Comments
 (0)