def conesearch(self, ra, dec, radius, **kwargs): ## ToDo: rewrite to use Gaia Archive, not tap service. Need to ditch distance param and just use parallax # input parameters in degrees: ra_ = ra.to(u.degree); dec_= dec.to(u.degree); rad_=radius.to(u.degree) maxrec = kwargs.get('maxrec', 20000) columnlist = self._get_col_list() + ', gd.r_est' dbsource = '\n\t'.join(['\nFROM gaiadr2_complements.geometric_distance gd', 'INNER JOIN gaiadr2.gaia_source gs using (source_id) ']) constraints = '\n\t'.join(['\nWHERE ', 'CONTAINS(POINT(\'\', gs.ra, gs.dec), ', '\tCIRCLE(\'\', {ra}, {dec}, {rad})) = 1 '.format(ra=ra_.value, dec=dec_.value, rad=rad_.value)]) if self.source_constraints is not None: constraints = constraints + ' AND '+ self.source_constraints self.tap_query_string = 'SELECT \n\t\t'+ columnlist + dbsource + constraints tap_service = TAPService(self.tap_service_url) tap_results = tap_service.search(self.tap_query_string, maxrec=maxrec) self.objs = tap_results.to_table().to_pandas() self.objs.set_index('source_id', inplace=True)
def __init__(self, coord, radius, **kwargs): surveycoord.SurveyCoord.__init__(self, coord, radius, **kwargs) self.survey = 'WISE' self.bands = WISE_bands self.service = TAPService('https://irsa.ipac.caltech.edu/TAP') self.query = None self.database = "allwise_p3as_psd"
def connect(self, login, password): ''' Authenticate the service through CEFCA portal. Parameters ---------- login : str User login, usually an email. password : str User password. ''' self.auth = CEFCA_authenticate(login, password) self.service = TAPService(self.serviceUrl, self.auth)
def from_source_idlist(self, source_idlist, source_idcol=None, filters=False): #xml-ify the source_idlist to a file if isinstance(source_idlist, Table): #guess which column contains the source ids if source_idcol is None: if 'source_id' in source_idlist.colnames: sidcol = 'source_id' elif 'source' in source_idlist.colnames: sidcol = 'source' else: raise ValueError('no column to use as source_id') else: if source_idcol not in source_idlist.colnames: raise ValueError(f'invalid column specified as source id column: {source_idcol}') sidcol = source_idcol tbl = source_idlist elif isinstance(source_idlist, np.ndarray) or isinstance(source_idlist, list): sidcol = 'source_id' tbl = Table({sidcol:source_idlist}) else: raise ValueError(f'invalid source_idlist type: {type(source_idlist)}') xml_path = 'source_idlist.xml' tbl.write(xml_path, table_id='source_idlist', format='votable', overwrite=True) #build the query: col_list = self._get_col_list() + ', gd.r_est' dbsource = ''.join([' FROM tap_upload.source_idlist sidl', f' LEFT JOIN gaiadr2.gaia_source gs ON gs.source_id = sidl.{sidcol}', f' LEFT JOIN gaiadr2_complements.geometric_distance gd on gs.source_id = gd.source_id' ]) query_str = f'SELECT sidl.{sidcol} as "source", '+col_list+dbsource if filters: query_str = query_str + ' WHERE '+ self.source_constraints self.tap_query_string = query_str #fetch the data #job = Gaia.launch_job_async(query=query_str, upload_resource=xml_path,upload_table_name='source_idlist') #self.objs = job.get_results().to_pandas() #fetch data via tap query tap_service = TAPService(self.tap_service_url) tap_results = tap_service.search(self.tap_query_string, maxrec=len(tbl),uploads={'source_idlist':tbl}) self.objs = tap_results.to_table().to_pandas() self.objs.set_index('source', inplace=True)
def __init__(self): self.service = TAPService(nancay_tap) log.info(f'TAP service {nancay_tap} accessed.') self.meta_names = [ 'target_name', 'obs_creator_did', 's_ra', 's_dec', 't_min', 't_max', 'em_min', 'em_max' ] self._conditions = { 'time': '', 'freq': '', 'pos': '', } self.time_range = [None, None] self.freq_range = [None, None] self.fov_radius = 180 * u.deg self.fov_center = None
import numpy as np import pandas as pd import pickle import astropy.units as u import astropy.coordinates as coord from astropy.coordinates.sky_coordinate import SkyCoord from astropy.units import Quantity from pyvo.dal import TAPService import matplotlib.pyplot as plt from matplotlib.pyplot import cm tap_service_url = "http://gaia.ari.uni-heidelberg.de/tap" tap_service = TAPService(tap_service_url) #default query columns: column_list = ['source_id', 'ra','dec','parallax','pmra','pmdec','radial_velocity', 'phot_g_mean_mag','phot_bp_mean_mag', 'phot_rp_mean_mag','r_est'] class fieldstars(): def __init__(self, name:str): self.name=name self.coords = None self.tap_query_string = None
from pyvo.dal import TAPService import astropy from astropy.table import Table, vstack import sys tap_service = TAPService("http://dc.g-vo.org/tap") tap_results = tap_service.search("SELECT TOP 10 * FROM ivoa.obscore") print(tap_results)