In [1]:
import numpy as np
import pandas as pd
from astropy import coordinates
import astropy.units as u
import astroquery
from astroquery.irsa import Irsa
from astroquery.vizier import Vizier
Vizier.ROW_LIMIT = -1
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
obj = ["3C 454.3", 343.49062, 16.14821, 4./60.]
# name, ra, dec, radius of cone
obj_name = obj[0]
obj_ra = obj[1]
obj_dec = obj[2]
cone_radius = obj[3]
In [3]:
obj_coord = coordinates.SkyCoord(ra=obj_ra, dec=obj_dec, unit=(u.deg, u.deg), frame="icrs")
In [4]:
data_2mass = Irsa.query_region(obj_coord, catalog="fp_psc", radius=cone_radius * u.deg)
data_wise = Irsa.query_region(obj_coord, catalog="allwise_p3as_psd", radius=cone_radius * u.deg)
data_galex = Vizier.query_region(obj_coord, catalog='II/335', radius=cone_radius * u.deg)
data_galex = data_galex[0]
In [9]:
num_2mass = len(data_2mass)
num_wise = len(data_wise)
num_galex = len(data_galex)
print("Number of object in (2MASS, WISE, GALEX): ", num_2mass, num_wise, num_galex)
In [10]:
num_match_2mass_wise = 0
num_match_2mass_galex = 0
num_match_wise_galex = 0
sep_min = 2 # minimum separation in arcsec
## match: from 2MASS to WISE and GALEX
for i, idata in enumerate(data_2mass):
ra_2mass = idata['ra']
dec_2mass = idata['dec']
c_2mass = coordinates.SkyCoord(ra=ra_2mass, dec=dec_2mass, unit=(u.deg, u.deg), frame="icrs")
#####
# check in WISE cat
match_wise = False
for j, jdata in enumerate(data_wise):
ra_wise = jdata['ra']
dec_wise = jdata['dec']
c_wise = coordinates.SkyCoord(ra=ra_wise, dec=dec_wise, unit=(u.deg, u.deg), frame="icrs")
sep_2mass_wise = c_2mass.separation(c_wise)
if (sep_2mass_wise <= sep_min * u.arcsec):
match_wise = True
break
if match_wise:
num_match_2mass_wise += 1
#####
# check in GALEX cat
match_galex = False
for k, kdata in enumerate(data_galex):
ra_galex = kdata['RAJ2000']
dec_galex = kdata['DEJ2000']
c_galex = coordinates.SkyCoord(ra=ra_galex, dec=dec_galex, unit=(u.deg, u.deg), frame="icrs")
sep_2mass_galex = c_2mass.separation(c_galex)
if (sep_2mass_galex < sep_min * u.arcsec):
match_galex = True
break
if match_galex:
num_match_2mass_galex += 1
#####
# check WISE in GALEX cat
for j, jdata in enumerate(data_wise):
ra_wise = jdata['ra']
dec_wise = jdata['dec']
c_wise = coordinates.SkyCoord(ra=ra_wise, dec=dec_wise, unit=(u.deg, u.deg), frame="icrs")
match_wise_galex = False
for k, kdata in enumerate(data_galex):
ra_galex = kdata['RAJ2000']
dec_galex = kdata['DEJ2000']
c_galex = coordinates.SkyCoord(ra=ra_galex, dec=dec_galex, unit=(u.deg, u.deg), frame="icrs")
sep_wise_galex = c_wise.separation(c_galex)
if (sep_wise_galex <= sep_min * u.arcsec):
match_wise_galex = True
break
if match_wise_galex:
num_match_wise_galex += 1
print("Coordinate Match (2MASS-WISE, 2MASS-GALEX, WISE-GALEX): ", num_match_2mass_wise, num_match_2mass_galex, num_match_wise_galex)
In [11]:
data_2mass
Out[11]:
In [ ]: