From bd64882b13471368135c4e7249ce31133a18dcb1 Mon Sep 17 00:00:00 2001 From: Eero Vaher Date: Thu, 14 Sep 2023 16:19:38 +0200 Subject: [PATCH 1/2] Refactor constructing Gaia ADQL queries --- astroquery/gaia/core.py | 56 +++++++++++++---------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/astroquery/gaia/core.py b/astroquery/gaia/core.py index 8f9a3597a7..8ca9fcf384 100644 --- a/astroquery/gaia/core.py +++ b/astroquery/gaia/core.py @@ -397,44 +397,31 @@ def __query_object(self, coordinate, *, radius=None, width=None, height=None, else: raHours, dec = commons.coord_to_radec(coord) ra = raHours * 15.0 # Converts to degrees - widthQuantity = self.__getQuantityInput(width, "width") - heightQuantity = self.__getQuantityInput(height, "height") - widthDeg = widthQuantity.to(units.deg) - heightDeg = heightQuantity.to(units.deg) - if columns: - columns = ','.join(map(str, columns)) - else: - columns = "*" - - query = """ + query = f""" SELECT - {row_limit} + {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} DISTANCE( - POINT('ICRS', {ra_column}, {dec_column}), + POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), POINT('ICRS', {ra}, {dec}) ) as dist, - {columns} + {",".join(columns) or "*"} FROM - {table_name} + {self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} WHERE 1 = CONTAINS( - POINT('ICRS', {ra_column}, {dec_column}), + POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), BOX( 'ICRS', {ra}, {dec}, - {width}, - {height} + {self.__getQuantityInput(width, "width").to_value(u.deg)}, + {self.__getQuantityInput(height, "height").to_value(u.deg)} ) ) ORDER BY dist ASC - """.format(**{'row_limit': "TOP {0}".format(self.ROW_LIMIT) if self.ROW_LIMIT > 0 else "", - 'ra_column': self.MAIN_GAIA_TABLE_RA, 'dec_column': self.MAIN_GAIA_TABLE_DEC, - 'columns': columns, 'table_name': self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE, - 'ra': ra, 'dec': dec, - 'width': widthDeg.value, 'height': heightDeg.value}) + """ if async_job: job = self.launch_job_async(query, verbose=verbose) else: @@ -548,33 +535,24 @@ def __cone_search(self, coordinate, radius, *, table_name=None, if radius is not None: radiusDeg = Angle(self.__getQuantityInput(radius, "radius")).to_value(u.deg) - if columns: - columns = ','.join(map(str, columns)) - else: - columns = "*" - - query = """ + query = f""" SELECT - {row_limit} - {columns}, + {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} + {",".join(columns) or "*"}, DISTANCE( - POINT('ICRS', {ra_column}, {dec_column}), + POINT('ICRS', {ra_column_name}, {dec_column_name}), POINT('ICRS', {ra}, {dec}) ) AS dist FROM - {table_name} + {table_name or self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} WHERE 1 = CONTAINS( - POINT('ICRS', {ra_column}, {dec_column}), - CIRCLE('ICRS', {ra}, {dec}, {radius}) + POINT('ICRS', {ra_column_name}, {dec_column_name}), + CIRCLE('ICRS', {ra}, {dec}, {radiusDeg}) ) ORDER BY dist ASC - """.format(**{'ra_column': ra_column_name, - 'row_limit': "TOP {0}".format(self.ROW_LIMIT) if self.ROW_LIMIT > 0 else "", - 'dec_column': dec_column_name, 'columns': columns, 'ra': ra, 'dec': dec, - 'radius': radiusDeg, - 'table_name': table_name or self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE}) + """ if async_job: return self.launch_job_async(query=query, From b5bb8f0c13d34dfc1f5a74ffd68d2c8310593af0 Mon Sep 17 00:00:00 2001 From: Eero Vaher Date: Thu, 14 Sep 2023 16:28:32 +0200 Subject: [PATCH 2/2] Remove useless whitespace from Gaia ADQL queries --- astroquery/gaia/core.py | 90 +++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/astroquery/gaia/core.py b/astroquery/gaia/core.py index 8ca9fcf384..3726d82483 100644 --- a/astroquery/gaia/core.py +++ b/astroquery/gaia/core.py @@ -18,6 +18,7 @@ from datetime import datetime import shutil from collections.abc import Iterable +from textwrap import dedent from astropy import units from astropy.coordinates import Angle @@ -398,30 +399,32 @@ def __query_object(self, coordinate, *, radius=None, width=None, height=None, raHours, dec = commons.coord_to_radec(coord) ra = raHours * 15.0 # Converts to degrees - query = f""" - SELECT - {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} - DISTANCE( - POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), - POINT('ICRS', {ra}, {dec}) - ) as dist, - {",".join(columns) or "*"} - FROM - {self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} - WHERE - 1 = CONTAINS( - POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), - BOX( - 'ICRS', - {ra}, - {dec}, - {self.__getQuantityInput(width, "width").to_value(u.deg)}, - {self.__getQuantityInput(height, "height").to_value(u.deg)} - ) - ) - ORDER BY - dist ASC - """ + query = dedent( + f"""\ + SELECT + {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} + DISTANCE( + POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), + POINT('ICRS', {ra}, {dec}) + ) as dist, + {",".join(columns) or "*"} + FROM + {self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} + WHERE + 1 = CONTAINS( + POINT('ICRS', {self.MAIN_GAIA_TABLE_RA}, {self.MAIN_GAIA_TABLE_DEC}), + BOX( + 'ICRS', + {ra}, + {dec}, + {self.__getQuantityInput(width, "width").to_value(u.deg)}, + {self.__getQuantityInput(height, "height").to_value(u.deg)} + ) + ) + ORDER BY + dist ASC\ + """ + ) if async_job: job = self.launch_job_async(query, verbose=verbose) else: @@ -535,25 +538,26 @@ def __cone_search(self, coordinate, radius, *, table_name=None, if radius is not None: radiusDeg = Angle(self.__getQuantityInput(radius, "radius")).to_value(u.deg) - query = f""" - SELECT - {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} - {",".join(columns) or "*"}, - DISTANCE( - POINT('ICRS', {ra_column_name}, {dec_column_name}), - POINT('ICRS', {ra}, {dec}) - ) AS dist - FROM - {table_name or self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} - WHERE - 1 = CONTAINS( - POINT('ICRS', {ra_column_name}, {dec_column_name}), - CIRCLE('ICRS', {ra}, {dec}, {radiusDeg}) - ) - ORDER BY - dist ASC - """ - + query = dedent( + f"""\ + SELECT + {f"TOP {self.ROW_LIMIT}" if self.ROW_LIMIT > 0 else ""} + {",".join(columns) or "*"}, + DISTANCE( + POINT('ICRS', {ra_column_name}, {dec_column_name}), + POINT('ICRS', {ra}, {dec}) + ) AS dist + FROM + {table_name or self.MAIN_GAIA_TABLE or conf.MAIN_GAIA_TABLE} + WHERE + 1 = CONTAINS( + POINT('ICRS', {ra_column_name}, {dec_column_name}), + CIRCLE('ICRS', {ra}, {dec}, {radiusDeg}) + ) + ORDER BY + dist ASC\ + """ + ) if async_job: return self.launch_job_async(query=query, output_file=output_file,