Esempio n. 1
0
    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)
Esempio n. 2
0
 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"
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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
Esempio n. 6
0
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

Esempio n. 7
0
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)