Source code for astrophot.utils.conversions.units

import numpy as np

deg_to_arcsec = 3600.

[docs] def flux_to_sb(flux, pixel_area, zeropoint): """Conversion from flux units to logarithmic surface brightness units. .. math:: \\mu = -2.5\\log_{10}(flux) + z.p. + 2.5\\log_{10}(A) where :math:`z.p.` is the zeropoint and :math:`A` is the area of a pixel. """ return -2.5 * np.log10(flux) + zeropoint + 2.5 * np.log10(pixel_area)
[docs] def flux_to_mag(flux, zeropoint, fluxe=None): """Converts a flux total into logarithmic magnitude units. .. math:: m = -2.5\\log_{10}(flux) + z.p. where :math:`z.p.` is the zeropoint. """ if fluxe is None: return -2.5 * np.log10(flux) + zeropoint else: return -2.5 * np.log10(flux) + zeropoint, 2.5 * fluxe / (np.log(10) * flux)
[docs] def sb_to_flux(sb, pixel_area, zeropoint): """Converts logarithmic surface brightness units into flux units. .. math:: flux = A 10^{-(\\mu - z.p.)/2.5} where :math:`z.p.` is the zeropoint and :math:`A` is the area of a pixel. """ return pixel_area * 10 ** (-(sb - zeropoint) / 2.5)
[docs] def mag_to_flux(mag, zeropoint, mage=None): """converts logarithmic magnitude units into a flux total. .. math:: flux = 10^{-(m - z.p.)/2.5} where :math:`z.p.` is the zeropoint. """ if mage is None: return 10 ** (-(mag - zeropoint) / 2.5) else: I = 10 ** (-(mag - zeropoint) / 2.5) return I, np.log(10) * I * mage / 2.5
[docs] def magperarcsec2_to_mag(mu, a=None, b=None, A=None): """ Converts mag/arcsec^2 to mag mu: mag/arcsec^2 a: semi major axis radius (arcsec) b: semi minor axis radius (arcsec) A: pre-calculated area (arcsec^2) returns: mag .. math:: m = \\mu -2.5\\log_{10}(A) where :math:`A` is an area in arcsec^2. """ assert (not A is None) or (not a is None and not b is None) if A is None: A = np.pi * a * b return mu - 2.5 * np.log10( A ) # https://en.wikipedia.org/wiki/Surface_brightness#Calculating_surface_brightness
[docs] def mag_to_magperarcsec2(m, a=None, b=None, R=None, A=None): """ Converts mag to mag/arcsec^2 m: mag a: semi major axis radius (arcsec) b: semi minor axis radius (arcsec) A: pre-calculated area (arcsec^2) returns: mag/arcsec^2 .. math:: \\mu = m + 2.5\\log_{10}(A) where :math:`A` is an area in arcsec^2. """ assert (not A is None) or (not a is None and not b is None) or (not R is None) if not R is None: A = np.pi * (R ** 2) elif A is None: A = np.pi * a * b return m + 2.5 * np.log10( A ) # https://en.wikipedia.org/wiki/Surface_brightness#Calculating_surface_brightness
[docs] def PA_shift_convention(pa, unit="rad"): """ Alternates between standard mathematical convention for angles, and astronomical position angle convention. The standard convention is to measure angles counter-clockwise relative to the positive x-axis The astronomical convention is to measure angles counter-clockwise relative to the positive y-axis """ if unit == "rad": shift = np.pi elif unit == "deg": shift = 180.0 return (pa - (shift / 2)) % shift