Пример #1
0
def _parse_dimension(dim):
    """
    Parses the radius and returns it in the format expected by UKIDSS.

    Parameters
    ----------
    dim : str, `~astropy.units.Quantity`

    Returns
    -------
    dim_in_min : float
        The value of the radius in arcminutes.
    """
    if isinstance(dim,
                  u.Quantity) and dim.unit in u.deg.find_equivalent_units():
        dim_in_min = dim.to(u.arcmin).value
    # otherwise must be an Angle or be specified in hours...
    else:
        try:
            new_dim = commons.parse_radius(dim).degree
            dim_in_min = u.Quantity(value=new_dim,
                                    unit=u.deg).to(u.arcmin).value
        except (u.UnitsException, coord.errors.UnitsError, AttributeError):
            raise u.UnitsException("Dimension not in proper units")
    return dim_in_min
Пример #2
0
 def invert(self, dispersion_values):
     if not hasattr(dispersion_values, 'unit'):
         raise u.UnitsException(
             'Must give a dispersion value with a valid unit')
     if misc.isiterable(dispersion_values) and not isinstance(
             dispersion_values, basestring):
         dispersion_values = np.array(dispersion_values)
     return float((dispersion_values - self.dispersion0) /
                  self.dispersion_delta) + self.pixel_index
Пример #3
0
def _parse_dimension(dim):
    if isinstance(dim,
                  u.Quantity) and dim.unit in u.deg.find_equivalent_units():
        if dim.unit not in ['arcsec', 'arcmin', 'deg']:
            dim = dim.to(u.degree)
    # otherwise must be an Angle or be specified in hours...
    else:
        try:
            new_dim = commons.parse_radius(dim)
            dim = u.Quantity(new_dim.degree, u.Unit('degree'))
        except (u.UnitsException, coord.errors.UnitsError, AttributeError):
            raise u.UnitsException("Dimension not in proper units")
    return dim
Пример #4
0
    def from_header(cls,
                    header,
                    unit=None,
                    spectroscopic_axis_number=1,
                    **kwargs):
        """
        Load a simple linear Spectral WCS from a FITS header.

        Respects the following keywords:

         * CDELT or CD: delta-dispersion
         * CRVAL: reference position
         * CRPIX: reference pixel
         * CUNIT: dispersion units (parsed by astropy.units)

        Parameters
        ----------
        header : str
            FITS Filename or FITS Header instance
        unit : astropy.units.Unit
            Specified units. Overrides CUNIT1 if specified.

        .. todo:: Allow FITS files or just headers to be passed...
        """
        if isinstance(header, basestring):
            header = fits.getheader(header, **kwargs)

        if unit is None:
            try:
                unit = u.Unit(header.get('CUNIT%i' %
                                         spectroscopic_axis_number))
            except u.UnitsException:
                raise u.UnitsException(
                    "No units were specified and CUNIT did not contain unit information."
                )

        cdelt = header.get('CDELT%i' % spectroscopic_axis_number)
        if cdelt is None:
            cdelt = header.get(
                'CD%i_%i' %
                (spectroscopic_axis_number, spectroscopic_axis_number))

        crpix = header['CRPIX%i' % spectroscopic_axis_number]
        crval = header['CRVAL%i' % spectroscopic_axis_number]

        return cls(crval, cdelt, crpix - 1, unit=unit)
Пример #5
0
def _parse_radius(radius):
    """
    Parses the radius and returns it in the format expected by NED.

    Parameters
    ----------
    radius : str, `~astropy.units.Quantity`

    Returns
    -------
    radius_in_min : float
        The value of the radius in arcminutes.
    """
    if isinstance(radius, u.Quantity) and radius.unit in u.deg.find_equivalent_units():
        radius_in_min = radius.to(u.arcmin).value
    # otherwise must be an Angle or be specified in hours...
    else:
        try:
            radius_in_min = commons.radius_to_unit(radius,u.arcmin)
        except (u.UnitsException, coord.errors.UnitsError, AttributeError):
            raise u.UnitsException("Dimension not in proper units")
    return radius_in_min