def query_GaiaEDR3(ra, dec, mag, filter, radius=60.):

    G_guess = guess_Gaia_mag_from_color(mag, filter)


    coord = SkyCoord(ra = ra, dec = dec, unit = (u.degree, u.degree), \
                     frame = 'icrs')

    radius = u.Quantity(radius / 3600., u.deg)
    result = Gaia.query_object(coordinate=coord, radius=radius)

    Gmag0 = result["phot_g_mean_mag"]
    filt = np.abs(Gmag0 - G_guess) < 1.0
    parallax0 = result["parallax"][filt]
    parallax_error0 = result["parallax_error"][filt]
    gaiaid0 = result["source_id"][filt]

    if len(parallax0) == 0:
        gaiaid = ""
        parallax = np.nan
        parallax_error = np.nan
    elif len(parallax0) > 1:
        gaiaid = gaiaid0
        parallax = parallax0
        parallax_error = parallax_error0

    else:
        gaiaid = gaiaid0[0]
        parallax = parallax0[0]
        parallax_error = parallax_error0[0]

    return (gaiaid, parallax, parallax_error)
Exemple #2
0
def query_survey(dataframe, idx, features, survey):
    series = dataframe.loc[idx]
    coord = SkyCoord(ra=series.RA, dec=series.Dec, unit=(u.deg, u.deg))
    try:
        if survey == '2MASS':
            temp = Irsa.query_region(coord,
                                     radius=search_radius,
                                     catalog='fp_psc').to_pandas()

        elif survey == 'GAIA':
            temp = Gaia.query_object(coordinate=coord,
                                     width=search_radius,
                                     height=search_radius).to_pandas()

        else:
            print('Invalid Survey')

        catalog = SkyCoord(ra=temp.ra, dec=temp.dec, unit=(u.deg, u.deg))

        i, _, _ = match_coordinates_sky(coord, catalog)

        for feature in features:
            dataframe.at[idx, feature] = temp.at[int(i), feature]

    except Exception as e:
        print(e)
Exemple #3
0
def get_distance(target):
    """
    Parameters
    ----------
    target : str
        Target name.

    Returns
    -------
    str
        SIMBAD name.
    float
        Distance (pc).
    """

    # Liu et al. (2016)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/ApJ/833/96

    # Dupuy & Liu (2012)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/ApJS/201/19

    # Faherty et al. (2012)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/ApJ/752/56

    # Weinberger et al. (2016)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/AJ/152/24

    # Theissen (2018)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/ApJ/862/173

    # Kirkpatrick et al. (2012)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/ApJ/753/156

    # Monet et al. (1992)
    # http://cdsarc.u-strasbg.fr/viz-bin/cat/J/AJ/103/638

    catalogues = ('J/ApJ/833/96'
                  'J/ApJS/201/19', 'J/ApJ/752/56', 'J/AJ/152/24',
                  'J/ApJ/862/173', 'J/ApJ/753/156', 'J/AJ/103/638')

    if target[-2:] == 'AB':
        target = target[:-2]

    elif target[-3:] == 'ABC':
        target = target[:-3]

    if target[0:7] == 'DENIS-P':
        target = target[:5] + target[7:]

        if target[-2] == '.':
            target = target[:-2]

    if target[0:5] == 'DENIS' and target[6:7] != 'J':
        target = target[:5] + ' J' + target[6:]

    simbad_id = 'None'
    parallax = ma.masked

    time.sleep(0.15)

    simbad = Simbad()
    simbad.add_votable_fields('parallax')

    simbad = simbad.query_object(target)

    if simbad is not None:
        simbad_id = simbad['MAIN_ID'][0]
        simbad_id = simbad_id.decode('utf-8')
        parallax = simbad['PLX_VALUE'][0]

    if ma.is_masked(parallax):
        for _, item in enumerate(catalogues):
            result = Vizier.query_object(target, catalog=item)

            if result.keys():
                try:
                    parallax = result[0]['plx'][0]  # [mas]
                except KeyError:
                    pass

                if ma.is_masked(parallax):
                    try:
                        parallax = result[0]['Plx'][0]  # [mas]
                    except KeyError:
                        pass

            else:
                continue

            if not ma.is_masked(parallax):
                break

    if ma.is_masked(parallax):

        if simbad is not None:
            coord_ra = simbad['RA'][0]
            coord_dec = simbad['DEC'][0]

            coord = SkyCoord(ra=coord_ra,
                             dec=coord_dec,
                             unit=(u.hourangle, u.deg),
                             frame='icrs')
            result = Gaia.query_object(coordinate=coord,
                                       width=1. * u.arcsec,
                                       height=1. * u.arcsec)

            if result:
                parallax = result['parallax'][0]  # [mas]

    if ma.is_masked(parallax) or parallax < 0.:
        distance = np.nan
    else:
        distance = 1. / (parallax * 1e-3)  # [pc]

    return simbad_id, distance