Source code for xga.sourcetools.match

#  This code is a part of XMM: Generate and Analyse (XGA), a module designed for the XMM Cluster Survey (XCS).
#  Last modified by David J Turner (david.turner@sussex.ac.uk) 04/01/2021, 20:04. Copyright (c) David J Turner

import numpy as np
from astropy.units.quantity import Quantity
from pandas import DataFrame

from .. import CENSUS, BLACKLIST
from ..exceptions import NoMatchFoundError


[docs]def simple_xmm_match(src_ra: float, src_dec: float, distance: Quantity = Quantity(30.0, 'arcmin')) -> DataFrame: """ Returns ObsIDs within a given distance from the input ra and dec values. :param float src_ra: RA coordinate of the source, in degrees. :param float src_dec: DEC coordinate of the source, in degrees. :param Quantity distance: The distance to search for XMM observations within, default should be able to match a source on the edge of an observation to the centre of the observation. :return: The ObsID, RA_PNT, and DEC_PNT of matching XMM observations. :rtype: DataFrame """ rad = distance.to('deg').value local_census = CENSUS.copy() local_census["dist"] = np.sqrt((local_census["RA_PNT"] - src_ra)**2 + (local_census["DEC_PNT"] - src_dec)**2) matches = local_census[local_census["dist"] <= rad] matches = matches[~matches["ObsID"].isin(BLACKLIST["ObsID"])] if len(matches) == 0: raise NoMatchFoundError("No XMM observation found within {a} of ra={r} " "dec={d}".format(r=round(src_ra, 4), d=round(src_dec, 4), a=distance)) return matches