Source code for madcubapy.coordinates.offsets

import astropy.units as u
import numpy as np

__all__ = [
    'get_angular_offset_points',
    'get_angular_separation',
    'get_physical_offset_points',
    'get_physical_separation',
]

[docs] def get_angular_offset_points(points, ref_point, fitsmap): """ Get offset coordinates of a point or set of points, with respect to a reference point in angular units. Parameters ---------- points : `~numpy.ndarray` Input point or points. ref_point : `~numpy.ndarray` Reference point. fitsmap : `~madcubapy.io.MadcubaMap` or `~astropy.nddata.CCDData` Map from which to get angular size of each pixel (CDELT1, CDELT2). Returns ------- angular_offset_points : `~astropy.units.Quantity` Points with converted units to angular offset. """ cdelt_deg = fitsmap.wcs.wcs.cdelt[:2] * u.deg angular_offset_points = (points - ref_point) * cdelt_deg return angular_offset_points
[docs] def get_angular_separation(points, ref_point, fitsmap): """ Get separation between a point or set of points, and a reference pixel in angular units. Parameters ---------- points : `~numpy.ndarray` Input point or points. ref_point : `~numpy.ndarray` Reference point. fitsmap : `~madcubapy.io.MadcubaMap` or `~astropy.nddata.CCDData` Map from which to get angular size of each pixel (CDELT1, CDELT2). Returns ------- angular_separation : `~astropy.units.Quantity` Separation between input points and reference point. """ angular_offset_points = get_angular_offset_points(points, ref_point, fitsmap) angular_separation = np.linalg.norm(angular_offset_points, axis=-1) return angular_separation
[docs] def get_physical_offset_points(points, ref_point, fitsmap, distance): """ Get offset coordinates of a point or set of points, with respect to a reference point in physical distance units. Parameters ---------- points : `~numpy.ndarray` Input point or points. ref_point : `~numpy.ndarray` Reference point. fitsmap : `~madcubapy.io.MadcubaMap` or `~astropy.nddata.CCDData` Map from which to get angular size of each pixel (CDELT1, CDELT2). distance : `~astropy.units.quantity` Distance from earth to object. Returns ------- physical_offset_points : `~astropy.units.Quantity` Points with converted units to physical distance offset. """ angular_offset_points = get_angular_offset_points(points, ref_point, fitsmap) physical_offset_points = (angular_offset_points * distance).to( u.au, equivalencies=u.dimensionless_angles() ) return physical_offset_points
[docs] def get_physical_separation(points, ref_point, fitsmap, distance): """ Get separation between a point or set of points, and a reference pixel in physical distance units. Parameters ---------- points : `~numpy.ndarray` Input point or points. ref_point : `~numpy.ndarray` Reference point. fitsmap : `~madcubapy.io.MadcubaMap` or `~astropy.nddata.CCDData` Map from which to get angular size of each pixel (CDELT1, CDELT2). distance : `~astropy.units.quantity` Distance from earth to object. Returns ------- physical_separation : `~astropy.units.Quantity` Separation between input points and reference point. """ physical_offset_points = get_physical_offset_points(points, ref_point, fitsmap, distance) physical_separation = np.linalg.norm(physical_offset_points, axis=-1) return physical_separation