Skip to content

Commit

Permalink
Bug/vizier queries (#3)
Browse files Browse the repository at this point in the history
* Updated poetry file dependencies.  Updated Vizier catalog queries to new archive URLs, matched updated vizier query return list formats, added support for Gaia DR3, fixed Gaia Catalog test

* Added direct test for vizier query tools

* Grouping imports together
  • Loading branch information
rachel3834 authored Jan 14, 2025
1 parent 010086d commit 3033d4b
Show file tree
Hide file tree
Showing 5 changed files with 1,331 additions and 28 deletions.
11 changes: 7 additions & 4 deletions microlensing_photometry/logistics/GaiaTools/GaiaCatalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import astropy.units as u
from astropy.coordinates import SkyCoord
import numpy as np
from os import path

from microlensing_photometry.logistics import vizier_tools

Expand All @@ -23,21 +24,23 @@ def collect_Gaia_catalog(ra,dec,radius=15,row_limit = 10000,catalog_name='Gaia_c
-------
gaia_catalog : astropy.Table, sorted by magnitude (brighter to fainter)
"""
catalog_path = path.join(catalog_path, catalog_name)

try:

from astropy.table import Table

gaia_catalog = Table.read(catalog_name, format='ascii')
gaia_catalog = Table.read(catalog_path, format='ascii')

except:

gaia_catalog = vizier_tools.search_vizier_for_sources(ra, dec, radius, 'Gaia-EDR3', row_limit=-1,
coords='degree', log=None, debug=False)
gaia_catalog = vizier_tools.search_vizier_for_sources(ra, dec, radius, 'Gaia-DR3', row_limit=-1,
coords='degree', log=None, debug=True)

mask = np.isfinite(gaia_catalog['phot_g_mean_flux'])
sub_gaia_catalog = gaia_catalog[mask]
sub_gaia_catalog = sub_gaia_catalog[sub_gaia_catalog['phot_g_mean_flux'].argsort()[::-1],]
sub_gaia_catalog.write(catalog_name, format='ascii')
sub_gaia_catalog.write(catalog_path, format='ascii')

gaia_catalog = sub_gaia_catalog

Expand Down
29 changes: 19 additions & 10 deletions microlensing_photometry/logistics/vizier_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,27 @@ def search_vizier_for_sources(ra, dec, radius, catalog, row_limit=-1,
'pmDE':'pm_dec', 'e_pmDE':'pm_dec_error',
'Plx':'parallax', 'e_Plx': 'parallax_error'},
#'parallax':'parallax', 'parallax_error': 'parallax_error'},
{}]
{}],
'Gaia-DR3': ['I/355/gaiadr3',
{'RA_ICRS': 'ra', 'DE_ICRS': 'dec', 'Source': 'source_id',
'e_RA_ICRS': 'ra_error', 'e_DE_ICRS': 'dec_error',
'FG': 'phot_g_mean_flux', 'e_FG': 'phot_g_mean_flux_error',
'FBP': 'phot_bp_mean_flux', 'e_FBP': 'phot_bp_mean_flux_error',
'FRP': 'phot_rp_mean_flux', 'e_FRP': 'phot_rp_mean_flux_error',
'PM': 'pm', 'pmRA': 'pm_ra', 'e_pmRA': 'pm_ra_error',
'pmDE': 'pm_dec', 'e_pmDE': 'pm_dec_error',
'Plx': 'parallax', 'e_Plx': 'parallax_error'},
{}],
}

(cat_id,cat_col_dict,cat_filters) = supported_catalogs[catalog]

if catalog=='Gaia-EDR3':
v = Vizier(column_filters=cat_filters)
else:
v = Vizier(columns=list(cat_col_dict.keys()),\
column_filters=cat_filters)

v = Vizier(column_filters=cat_filters)

v.ROW_LIMIT = row_limit

if 'sexigesimal' in coords:
Expand All @@ -75,12 +83,11 @@ def search_vizier_for_sources(ra, dec, radius, catalog, row_limit=-1,
catalog_list = Vizier.find_catalogs(cat_id)

(status, result) = query_vizier_servers(v, c, r, [cat_id], debug=debug)

if result != None and len(result) == 1:
if result != None and len(result) > 0:

col_list = []
for col_id, col_name in cat_col_dict.items():
col = table.Column(name=col_name, data=result[0][col_id].data)
col = table.Column(name=col_name, data=result[col_id].data)
col_list.append(col)

result = table.Table( col_list )
Expand Down Expand Up @@ -111,7 +118,7 @@ def query_vizier_servers(query_service, coord, search_radius, catalog_id, log=No
result : astropy.Table, an astropy.Table containing the catalog
"""

vizier_servers_list = ['vizier.cfa.harvard.edu', 'vizier.hia.nrc.ca', 'vizier.u-strasbg.fr']
vizier_servers_list = ['vizier.cds.unistra.fr', 'vizier.cfa.harvard.edu']

query_service.VIZIER_SERVER = vizier_servers_list[0]

Expand All @@ -132,6 +139,7 @@ def query_vizier_servers(query_service, coord, search_radius, catalog_id, log=No
log.warning('Searching catalog server '+repr(query_service.VIZIER_SERVER))

try:
# Query_region now returns a TableList object, so we need to extract the result
result = query_service.query_region(coord, radius=search_radius, catalog=catalog_id)

# Handle long timeout requests:
Expand Down Expand Up @@ -159,14 +167,15 @@ def query_vizier_servers(query_service, coord, search_radius, catalog_id, log=No

return status, result

if result == None or len(result) > 0:
continue_query = False
elif len(result) == 0:
if result == None or len(result) == 0:
iserver += 1
if iserver >= len(vizier_servers_list):
continue_query = False
result = []
status = False
elif len(result) > 0:
continue_query = False
result = result[0]

return status, result

Expand Down
44 changes: 31 additions & 13 deletions microlensing_photometry/tests/test_logistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,31 @@
import microlensing_photometry.logistics.GaiaTools.GaiaCatalog as GC
from microlensing_photometry.astrometry import wcs as lcowcs
from microlensing_photometry.logistics import image_tools
from astropy.table import Table
import numpy as np

CWD = getcwd()
TEST_DATA_DIR = path.join(CWD, 'tests/test_output')
def test_collect_Gaia_catalog():

ra,dec,radius = 270,-30, 0.1

gaia_catalog = GC.collect_Gaia_catalog(ra,dec,radius=radius,row_limit = 10000,catalog_name='Gaia_catalog.dat',
catalog_path='../')
catalog_path=TEST_DATA_DIR)

assert len(gaia_catalog) == 5
assert np.allclose(gaia_catalog['phot_g_mean_flux'].value,np.array([3687.1 , 822.27, 742.57, 251.3 , 201.87]),
atol = 0.01)

filename = './Gaia_catalog.dat'
checkfile = path.isfile(filename)
assert checkfile
assert np.allclose(
gaia_catalog['phot_g_mean_flux'].value,
np.array([3687.07248 , 830.04544, 747.28028, 252.18597 , 201.87001]),
atol = 0.01
)

remove(filename)
filepath = path.join(TEST_DATA_DIR, 'Gaia_catalog.dat')
assert(path.isfile(filepath))

remove(filepath)


import numpy as np

def test_build_image():

size = 4096
Expand All @@ -44,6 +47,21 @@ def test_build_image():

def test_vizier_tools():

pass

#Did not find test in the original pyDANDIA so I pass for time been
test_ra = 299.590
test_dec = 35.201
test_radius = 0.1

source_catalog = vizier_tools.search_vizier_for_sources(
test_ra,
test_dec,
test_radius,
'Gaia-DR3',
row_limit=-1,
coords='degree',
log=None,
debug=True
)

assert(type(source_catalog) == type(Table([])))
assert(len(source_catalog) == 1)
assert(source_catalog['source_id'] == 2059383668236814720)
Loading

0 comments on commit 3033d4b

Please sign in to comment.