Source code for pytelpoint.stats
# Licensed under a 3-clause BSD style license - see LICENSE.rst
import numpy as np
import astropy.units as u
__all__ = ["skyrms", "psd"]
[docs]def skyrms(coo_ref, coo_meas):
"""
Calculate sky RMS of the offsets between reference and measured coordinates in the same way as TPOINT(tm).
Return the result in arcseconds.
Parameters
----------
coo_ref : `~astropy.coordinates.SkyCoord` instance
Reference coordinates
coo_meas : `~astropy.coordinates.SkyCoord` instance
Measured coordinates
Returns:
--------
rms : `~astropy.units.Quantity` (u.arcsec)
Root mean squared of the separation between coo_ref and coo_meas expressed in arcseconds.
"""
sep = coo_ref.separation(coo_meas)
rms = np.sqrt((sep ** 2).mean()).to(u.arcsec)
return rms
[docs]def psd(coo_ref, coo_meas, nterms=8):
"""
Calculate the population standard deviation, PSD, the way TPOINT(tm) does. Return the result in arcseconds.
Parameters
----------
coo_ref : `~astropy.coordinates.SkyCoord` instance
Reference coordinates
coo_meas : `~astropy.coordinates.SkyCoord` instance
Measured coordinates
nterms : int (default: 8)
Number of terms used in the model used to correct coo_meas to match coo_ref
Returns:
--------
sd : `~astropy.units.Quantity` (u.arcsec)
Population SD of the separation between coo_ref and coo_meas expressed in arcseconds.
"""
rms = skyrms(coo_ref, coo_meas)
sd = np.sqrt(rms**2 * len(coo_meas) / (len(coo_meas) - nterms))
return sd