========================
New Features
------------
- General
- A top-level configuration item, ``unicode_output`` has been added to
control whether the Unicode string representation of certain
objects will contain Unicode characters. For example, when
``use_unicode`` is `False` (default)::
>>> from astropy import units as u
>>> print(unicode(u.degree))
deg
When ``use_unicode`` is `True`::
>>> from astropy import units as u
>>> print(unicode(u.degree))
°
See `handling-unicode
<https://docs.astropy.org/en/v0.3/development/codeguide.html#unicode-guidelines>`_
for more information. [1441]
- ``astropy.utils.misc.find_api_page`` is now imported into the top-level.
This allows usage like ``astropy.find_api_page(astropy.units.Quantity)``.
[1779]
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- New class-based system for generating kernels, replacing ``make_kernel``.
[1255] The ``astropy.nddata.convolution`` sub-package has now been moved
to ``astropy.convolution``. [1451]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Two classes ``astropy.coordinates.Longitude`` and
``astropy.coordinates.Latitude`` have been added. These are derived from
the new ``Angle`` class and used for all longitude-like (RA, azimuth,
galactic L) and latitude-like coordinates (Dec, elevation, galactic B)
respectively. The ``Longitude`` class provides auto-wrapping capability
and ``Latitude`` performs bounds checking.
- ``astropy.coordinates.Distance`` supports conversion to and from distance
modulii. [1472]
- ``astropy.coordinates.SphericalCoordinateBase`` and derived classes now
support arrays of coordinates, enabling large speed-ups for some operations
on multiple coordinates at the same time. These coordinates can also be
indexed using standard slicing or any Numpy-compatible indexing. [1535,
1615]
- Array coordinates can be matched to other array coordinates, finding the
closest matches between the two sets of coordinates (see the
``astropy.coordinates.matching.match_coordinates_3d`` and
``astropy.coordinates.matching.match_coordinates_sky`` functions). [1535]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Added support for including massive Neutrinos in the cosmology classes. The
Planck (2013) cosmology has been updated to use this. [1364]
- Calculations now use and return ``Quantity`` objects where appropriate.
[1237]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Added support for writing IPAC format tables [1152].
astropy.io.fits
^^^^^^^^^^^^^^^
- Added initial support for table columns containing pseudo-unsigned
integers. This is currently enabled by using the ``uint=True`` option when
opening files; any table columns with the correct BZERO value will be
interpreted and returned as arrays of unsigned integers. [906]
- Upgraded vendored copy of CFITSIO to v3.35, though backwards compatibility
back to version v3.28 is maintained.
- Added support for reading and writing tables using the Q format for columns.
The Q format is identical to the P format (variable-length arrays) except
that it uses 64-bit integers for the data descriptors, allowing more than
4 GB of variable-length array data in a single table.
- Some refactoring of the table and ``FITS_rec`` modules in order to better
separate the details of the FITS binary and ASCII table data structures from
the HDU data structures that encapsulate them. Most of these changes should
not be apparent to users (but see API Changes below).
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Updated to support the VOTable 1.3 draft. [433]
- Added the ability to look up and group elements by their utype attribute.
[622]
- The format of the units of a VOTable file can be specified using the
``unit_format`` parameter. Note that units are still always written out
using the CDS format, to ensure compatibility with the standard.
astropy.modeling
^^^^^^^^^^^^^^^^
- Added a new framework for representing and evaluating mathematical models
and for fitting data to models. See "What's New in Astropy 0.3" in the
documentation for further details. [493]
astropy.stats
^^^^^^^^^^^^^
- Added robust statistics functions
``astropy.stats.funcs.median_absolute_deviation``,
``astropy.stats.funcs.biweight_location``, and
``astropy.stats.funcs.biweight_midvariance``. [621]
- Added ``astropy.stats.funcs.signal_to_noise_oir_ccd`` for computing the
signal to noise ratio for source being observed in the optical/IR using a
CCD. [870]
- Add ``axis=int`` option to ``stropy.stats.funcs.sigma_clip`` to allow
clipping along a given axis for multidimensional data. [1083]
astropy.table
^^^^^^^^^^^^^
- New columns can be added to a table via assignment to a non-existing
column by name. [726]
- Added ``join`` function to perform a database-like join on two tables. This
includes support for inner, left, right, and outer joins as well as
metadata merging. [903]
- Added ``hstack`` and ``vstack`` functions to stack two or more tables.
[937]
- Tables now have a ``.copy`` method and include support for ``copy`` and
``deepcopy``. [1208]
- Added support for selecting and manipulating groups within a table with
a database style ``group_by`` method. [1424]
- Table ``read`` and ``write`` functions now include rudimentary support
reading and writing of FITS tables via the unified reading/writing
interface. [591]
- The ``units`` and ``dtypes`` attributes and keyword arguments in Column,
MaskedColumn, Row, and Table are now deprecated in favor of the
single-tense ``unit`` and ``dtype``. [1174]
- Setting a column from a Quantity now correctly sets the unit on the Column
object. [732]
- Add ``remove_row`` and ``remove_rows`` to remove table rows. [1230]
- Added a new ``Table.show_in_browser`` method that opens a web browser
and displays the table rendered as HTML. [1342]
- New tables can now be instantiated using a single row from an existing
table. [1417]
astropy.time
^^^^^^^^^^^^
- New ``Time`` objects can be instantiated from existing ``Time`` objects
(but with different format, scale, etc.) [889]
- Added a ``Time.now`` classmethod that returns the current UTC time,
similarly to Python's ``datetime.now``. [1061]
- Update internal time manipulations so that arithmetic with Time and
TimeDelta objects maintains sub-nanosecond precision over a time span
longer than the age of the universe. [1189]
- Use ``astropy.utils.iers`` to provide ``delta_ut1_utc``, so that
automatic calculation of UT1 becomes possible. [1145]
- Add ``datetime`` format which allows converting to and from standard
library ``datetime.datetime`` objects. [860]
- Add ``plot_date`` format which allows converting to and from the date
representation used when plotting dates with matplotlib via the
``matplotlib.pyplot.plot_date`` function. [860]
- Add ``gps`` format (seconds since 1980-01-01 00:00:00 UTC,
including leap seconds) [1164]
- Add array indexing to Time objects [1132]
- Allow for arithmetic of multi-element and single-element Time and TimeDelta
objects. [1081]
- Allow multiplication and division of TimeDelta objects by
constants and arrays, as well as changing sign (negation) and
taking the absolute value of TimeDelta objects. [1082]
- Allow comparisons of Time and TimeDelta objects. [1171]
- Support interaction of Time and Quantity objects that represent a time
interval. [1431]
astropy.units
^^^^^^^^^^^^^
- Added parallax equivalency for length-angle. [985]
- Added mass-energy equivalency. [1333]
- Added a new-style format method which will use format specifiers
(like ``0.03f``) in new-style format strings for the Quantity's value.
Specifiers which can't be applied to the value will fall back to the
entire string representation of the quantity. [1383]
- Added support for complex number values in quantities. [1384]
- Added new spectroscopic equivalencies for velocity conversions
(relativistic, optical, and radio conventions are supported) [1200]
- The ``spectral`` equivalency now also handles wave number.
- The ``spectral_density`` equivalency now also accepts a Quantity for the
frequency or wavelength. It also handles additional flux units.
- Added Brightness Temperature (antenna gain) equivalency for conversion
between :math:`T_B` and flux density. [1327]
- Added percent unit, and allowed any string containing just a number to be
interpreted as a scaled dimensionless unit. [1409]
- New-style format strings can be used to set the unit output format. For
example, ``"{0:latex}".format(u.km)`` will print with the latex formatter.
[1462]
- The ``Unit.is_equivalent`` method can now take a tuple. In this case, the
method returns ``True`` if the unit is equivalent to any of the units
listed in the tuple. [1521]
- ``def_unit`` can now take a 2-tuple of names of the form (short, long),
where each entry is a list. This allows for handling strange units that
might have multiple short names. [1543]
- Added ``dimensionless_angles`` equivalency, which allows conversion of any
power of radian to dimensionless. [1161]
- Added the ability to enable set of units, or equivalencies that are used by
default. Also provided context managers for these cases. [1268]
- Imperial units are disabled by default. [1593, 1662]
- Added an ``astropy.units.add_enabled_units`` context manager, which allows
creating a temporary context with additional units temporarily enabled in
the global units namespace. [1662]
- ``Unit`` instances now have ``.si`` and ``.cgs`` properties a la
``Quantity``. These serve as shortcuts for ``Unit.to_system(cgs)[0]``
etc. [1610]
astropy.vo
^^^^^^^^^^
- New package added to support Virtual Observatory Simple Cone Search query
and service validation. [552]
astropy.wcs
^^^^^^^^^^^
- Fixed attribute error in ``astropy.wcs.Wcsprm`` (lattype->lattyp) [1463]
- Included a new command-line script called ``wcslint`` and accompanying API
for validating the WCS in a given FITS file or header. [580]
- Upgraded included version of WCSLIB to 4.19.
astropy.utils
^^^^^^^^^^^^^
- Added a new set of utilities in ``astropy.utils.timer`` for analyzing the
runtime of functions and making runtime predections for larger inputs.
[743]
- ``ProgressBar`` and ``Spinner`` classes can now be used directly to return
generator expressions. [771]
- Added ``astropy.utils.iers`` which allows reading in of IERS A or IERS B
bulletins and interpolation in UT1-UTC.
- Added a function ``astropy.utils.find_api_page``--given a class or object
from the ``astropy`` package, this will open that class's API documentation
in a web browser. [663]
- Data download functions such as ``download_file`` now accept a
``show_progress`` argument to suppress console output, and a ``timeout``
argument. [865, 1258]
astropy.extern.six
^^^^^^^^^^^^^^^^^^
- Added `six <https://pypi.org/project/six/>`_ for python2/python3
compatibility
- Astropy now uses the ERFA library instead of the IAU SOFA library for
fundamental time transformation routines. The ERFA library is derived, with
permission, from the IAU SOFA library but is distributed under a BSD license.
See ``license/ERFA.rst`` for details. [1293]
astropy.logger
^^^^^^^^^^^^^^
- The Astropy logger now no longer catches exceptions by default, and also
only captures warnings emitted by Astropy itself (prior to this change,
following an import of Astropy, any warning got re-directed through the
Astropy logger). Logging to the Astropy log file has also been disabled by
default. However, users of Astropy 0.2 will likely still see the previous
behavior with Astropy 0.3 for exceptions and logging to file since the
default configuration file installed by 0.2 set the exception logging to be
on by default. To get the new behavior, set the ``log_exceptions`` and
``log_to_file`` configuration items to ``False`` in the ``astropy.cfg``
file. [1331]
API Changes
-----------
- General
- The configuration option ``utils.console.use_unicode`` has been
moved to the top level and renamed to ``unicode_output``. It now
not only affects console widgets, such as progress bars, but also
controls whether calling `unicode` on certain classes will return a
string containing unicode characters.
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- The ``astropy.coordinates.Angle`` class is now a subclass of
``astropy.units.Quantity``. This means it has all of the methods of a
`numpy.ndarray`. [1006]
- The ``astropy.coordinates.Distance`` class is now a subclass of
``astropy.units.Quantity``. This means it has all of the methods of a
`numpy.ndarray`. [1472]
- All angular units are now supported, not just ``radian``, ``degree`` and
``hour``, but now ``arcsecond`` and ``arcminute`` as well. The object
will retain its native unit, so when printing out a value initially
provided in hours, its ``to_string()`` will, by default, also be
expressed in hours.
- The ``Angle`` class now supports arrays of angles.
- To be consistent with ``units.Unit``, ``Angle.format`` has been
deprecated and renamed to ``Angle.to_string``.
- To be consistent with ``astropy.units``, all plural forms of unit names
have been removed. Therefore, the following properties of
``astropy.coordinates.Angle`` should be renamed:
- ``radians`` -> ``radian``
- ``degrees`` -> ``degree``
- ``hours`` -> ``hour``
- Multiplication and division of two ``Angle`` objects used to raise
``NotImplementedError``. Now they raise ``TypeError``.
- The ``astropy.coordinates.Angle`` class no longer has a ``bounds``
attribute so there is no bounds-checking or auto-wrapping at this level.
This allows ``Angle`` objects to be used in arbitrary arithmetic
expressions (e.g. coordinate distance computation).
- The ``astropy.coordinates.RA`` and ``astropy.coordinates.Dec`` classes have
been removed and replaced with ``astropy.coordinates.Longitude`` and
``astropy.coordinates.Latitude`` respectively. These are now used for the
components of Galactic and Horizontal (Alt-Az) coordinates as well instead
of plain ``Angle`` objects.
- ``astropy.coordinates.angles.rotation_matrix`` and
``astropy.coordinates.angles.angle_axis`` now take a ``unit`` kwarg instead
of ``degrees`` kwarg to specify the units of the angles.
``rotation_matrix`` will also take the unit from the given ``Angle`` object
if no unit is provided.
- The ``AngularSeparation`` class has been removed. The output of the
coordinates ``separation()`` method is now an
``astropy.coordinates.Angle``. [1007]
- The coordinate classes have been renamed in a way that remove the
``Coordinates`` at the end of the class names. E.g., ``ICRSCoordinates``
from previous versions is now called ``ICRS``. [1614]
- ``HorizontalCoordinates`` are now named ``AltAz``, to reflect more common
terminology.
astropy.cosmology
^^^^^^^^^^^^^^^^^
- The Planck (2013) cosmology will likely give slightly different (and more
accurate) results due to the inclusion of Neutrino masses. [1364]
- Cosmology class properties now return ``Quantity`` objects instead of
simple floating-point values. [1237]
- The names of cosmology instances are now truly optional, and are set to
``None`` rather than the name of the class if the user does not provide
them. [1705]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- In the ``read`` method of ``astropy.io.ascii``, empty column values in an
ASCII table are now treated as missing values instead of the previous
treatment as a zero-length string "". This now corresponds to the behavior
of other table readers like ``numpy.genfromtxt``. To restore the previous
behavior set ``fill_values=None`` in the call to ``ascii.read()``. [919]
- The ``read`` and ``write`` methods of ``astropy.io.ascii`` now have a
``format`` argument for specifying the file format. This is the preferred
way to choose the format instead of the ``Reader`` and ``Writer``
arguments. [961]
- The ``include_names`` and ``exclude_names`` arguments were removed from
the ``BaseHeader`` initializer, and now instead handled by the reader and
writer classes directly. [1350]
- Allow numeric and otherwise unusual column names when reading a table
where the ``format`` argument is specified, but other format details such
as the delimiter or quote character are being guessed. [1692]
- When reading an ASCII table using the ``Table.read()`` method, the default
has changed from ``guess=False`` to ``guess=True`` to allow auto-detection
of file format. This matches the default behavior of ``ascii.read()``.
astropy.io.fits
^^^^^^^^^^^^^^^
- The ``astropy.io.fits.new_table`` function is marked "pending deprecation".
This does not mean it will be removed outright or that its functionality
has changed. It will likely be replaced in the future for a function with
similar, if not subtly different functionality. A better, if not slightly
more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
a new ``FITS_rec`` table--this has the same interface as
``pyfits.new_table``. The difference is that it returns a plan
``FITS_rec`` array, and not an HDU instance. This ``FITS_rec`` object can
then be used as the data argument in the constructors for ``BinTableHDU``
(for binary tables) or ``TableHDU`` (for ASCII tables). This is analogous
to creating an ``ImageHDU`` by passing in an image array.
``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
FITS-compatible recarray from a FITS column specification.
- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
methods of the ``CompDataHDU`` class are pending deprecation and moved to
internal methods. The operation of these methods depended too much on
internal state to be used safely by users; instead they are invoked
automatically in the appropriate places when reading/writing compressed
image HDUs.
- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.
- The constructor for ``CompDataHDU`` has been changed to accept new keyword
arguments. The new keyword arguments are essentially the same, but are in
underscore_separated format rather than camelCase format. The old
arguments are still pending deprecation.
- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
and ``_data_size`` respectively. The old attribute names are still pending
deprecation. This should only be of interest to advanced users who have
created their own HDU subclasses.
- The following previously deprecated functions and methods have been removed
entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.
- Interfaces that were pending deprecation are now fully deprecated. These
include: ``create_card``, ``create_card_from_string``, ``upper_key``,
``Header.get_history``, and ``Header.get_comment``.
- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.
astropy.io.registry
^^^^^^^^^^^^^^^^^^^
- Identifier functions for reading/writing Table and NDData objects should
now accept ``(origin, *args, **kwargs)`` instead of ``(origin, args,
kwargs)``. [591]
- Added a new ``astropy.io.registry.get_formats`` function for listing
registered I/O formats and details about the their readers/writers. [1669]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Added a new option ``use_names_over_ids`` option to use when converting
from VOTable objects to Astropy Tables. This can prevent a situation where
column names are not preserved when converting from a VOTable. [609]
astropy.nddata
^^^^^^^^^^^^^^
- The ``astropy.nddata.convolution`` sub-package has now been moved to
``astropy.convolution``, and the ``make_kernel`` function has been removed.
(the kernel classes should be used instead) [1451]
astropy.stats.funcs
^^^^^^^^^^^^^^^^^^^
- For ``sigma_clip``, the ``maout`` optional parameter has been removed, and
the function now always returns a masked array. A new boolean parameter
``copy`` can be used to indicated whether the input data should be copied
(``copy=True``, default) or used by reference (``copy=False``) in the
output masked array. [1083]
astropy.table
^^^^^^^^^^^^^
- The first argument to the ``Column`` and ``MaskedColumn`` classes is now
the data array--the ``name`` argument has been changed to an optional
keyword argument. [840]
- Added support for instantiating a ``Table`` from a list of dict, each one
representing a single row with the keys mapping to column names. [901]
- The plural 'units' and 'dtypes' have been switched to 'unit' and 'dtype'
where appropriate. The original attributes are still present in this
version as deprecated attributes, but will be removed in the next version.
[1174]
- The ``copy`` methods of ``Column`` and ``MaskedColumn`` were changed so
that the first argument is now ``order='C'``. This is required for
compatibility with Numpy 1.8 which is currently in development. [1250]
- Comparing a column (with == or !=) to a scalar, an array, or another column
now always returns a boolean Numpy array (which is a masked array if either
of the arguments in the comparison was masked). This is in contrast to the
previous behavior, which in some cases returned a boolean Numpy array, and
in some cases returned a boolean Column object. [1446]
astropy.time
^^^^^^^^^^^^
- For consistency with ``Quantity``, the attributes ``val`` and
``is_scalar`` have been renamed to ``value`` and ``isscalar``,
respectively, and the attribute ``vals`` has been dropped. [767]
- The double-float64 internal representation of time is used more
efficiently to enable better accuracy. [366]
- Format and scale arguments are now allowed to be case-insensitive. [1128]
astropy.units
^^^^^^^^^^^^^
- The ``Quantity`` class now inherits from the Numpy array class, and
includes the following API changes [929]:
- Using ``float(...)``, ``int(...)``, and ``long(...)`` on a quantity will
now only work if the quantity is dimensionless and unscaled.
- All Numpy ufuncs should now treat units correctly (or raise an exception
if not supported), rather than extract the value of quantities and
operate on this, emitting a warning about the implicit loss of units.
- When using relevant Numpy ufuncs on dimensionless quantities (e.g.
``np.exp(h * nu / (k_B * T))``), or combining dimensionless quantities
with Python scalars or plain Numpy arrays ``1 + v / c``, the
dimensionless Quantity will automatically be converted to an unscaled
dimensionless Quantity.
- When initializing a quantity from a value with no unit, it is now set to
be dimensionless and unscaled by default. When initializing a Quantity
from another Quantity and with no unit specified in the initializer, the
unit is now taken from the unit of the Quantity being initialized from.
- Strings are no longer allowed as the values for Quantities. [1005]
- Quantities are always comparable with zero regardless of their units.
[1254]
- The exception ``astropy.units.UnitsException`` has been renamed to
``astropy.units.UnitsError`` to be more consistent with the naming
of built-in Python exceptions. [1406]
- Multiplication with and division by a string now always returns a Unit
(rather than a Quantity when the string was first) [1408]
- Imperial units are disabled by default.
astropy.wcs
^^^^^^^^^^^
- For those including the ``astropy.wcs`` C headers in their project, they
should now include it as:
include "astropy_wcs/astropy_wcs_api.h"
instead of:
include "astropy_wcs_api.h"
[1631]
- The ``--enable-legacy`` option for ``setup.py`` has been removed. [1493]
Bug Fixes
---------
astropy.io.ascii
^^^^^^^^^^^^^^^^
- The ``write()`` function was ignoring the ``fill_values`` argument. [910]
- Fixed an issue in ``DefaultSplitter.join`` where the delimiter attribute
was ignored when writing the CSV. [1020]
- Fixed writing of IPAC tables containing null values. [1366]
- When a table with no header row was read without specifying the format and
using the ``names`` argument, then the first row could be dropped. [1692]
astropy.io.fits
^^^^^^^^^^^^^^^
- Binary tables containing compressed images may, optionally, contain other
columns unrelated to the tile compression convention. Although this is an
uncommon use case, it is permitted by the standard.
- Reworked some of the file I/O routines to allow simpler, more consistent
mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
"PyFITS-specific" modes used by PyFITS like "readonly" and "update". That
is, if reading a FITS file from an open file object, it doesn't matter as
much what "mode" it was opened in so long as it has the right capabilities
(read/write/etc.) Also works around bugs in the Python io module in 2.6+
with regard to file modes.
- Fixed a long-standing issue where writing binary tables did not correctly
write the TFORMn keywords for variable-length array columns (they omitted
the max array length parameter of the format). This was thought fixed in
an earlier version, but it was only fixed for compressed image HDUs and
not for binary tables in general.
astropy.nddata
^^^^^^^^^^^^^^
- Fixed crash when trying to multiple or divide ``NDData`` objects with
uncertainties. [1547]
astropy.table
^^^^^^^^^^^^^
- Using a list of strings to index a table now correctly returns a new table
with the columns named in the list. [1454]
- Inequality operators now work properly with ``Column`` objects. [1685]
astropy.time
^^^^^^^^^^^^
- ``Time`` scale and format attributes are now shown when calling ``dir()``
on a ``Time`` object. [1130]
astropy.wcs
^^^^^^^^^^^
- Fixed assignment to string-like WCS attributes on Python 3. [956]
astropy.units
^^^^^^^^^^^^^
- Fixed a bug that caused the order of multiplication/division of plain
Numpy arrays with Quantities to matter (i.e. if the plain array comes
first the units were not preserved in the output). [899]
- Directly instantiated ``CompositeUnits`` were made printable without
crashing. [1576]
Misc
^^^^
- Fixed various modules that hard-coded ``sys.stdout`` as default arguments
to functions at import time, rather than using the runtime value of
``sys.stdout``. [1648]
- Minor documentation fixes and enhancements [922, 1034, 1210, 1217,
1491, 1492, 1498, 1582, 1608, 1621, 1646, 1670, 1756]
- Fixed a crash that could sometimes occur when running the test suite on
systems with platform names containing non-ASCII characters. [1698]
Other Changes and Additions
---------------------------
- General
- Astropy now follows the PSF Code of Conduct. [1216]
- Astropy's test suite now tests all doctests in inline docstrings. Support
for running doctests in the reST documentation is planned to follow in
v0.3.1.
- Astropy's test suite can be run on multiple CPUs in parallel, often
greatly improving runtime, using the ``--parallel`` option. [1040]
- A warning is now issued when using Astropy with Numpy < 1.5--much of
Astropy may still work in this case but it shouldn't be expected to
either. [1479]
- Added automatic download/build/installation of Numpy during Astropy
installation if not already found. [1483]
- Handling of metadata for the ``NDData`` and ``Table`` classes has been
unified by way of a common ``MetaData`` descriptor--it allows instantiating
an object with metadata of any mapping type, and subsequently prevents
replacing the mapping stored in the ``.meta`` attribute (only direct
updates to that object are allowed). [1686]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Angles containing out of bounds minutes or seconds (e.g. 60) can be
parsed--the value modulo 60 is used with carry to the hours/minutes, and a
warning is issued rather than raising an exception. [990]
astropy.io.fits
^^^^^^^^^^^^^^^
- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
keywords added in more recent versions of this FITS Tile Compression spec.
This includes support for lossless compression with GZIP. (198) By default
no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
constants to the ``quantize_method`` argument to the ``CompImageHDU``
constructor. A seed can be manually specified, or automatically generated
using either the system clock or checksum-based methods via the
``dither_seed`` argument. See the documentation for ``CompImageHDU`` for
more details.
- Images compressed with the Tile Compression standard can now be larger than
4 GB through support of the Q format.
- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.
This was added for consistency with the ``.name`` attribute which returns
the EXTNAME value from the header.
- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
which give the Numpy dtype for the column data in the first case, and the
full Numpy compound dtype for each table row in the latter case.
- There was an issue where new tables created defaulted the values in all
string columns to '0.0'. Now string columns are filled with empty strings
by default--this seems a less surprising default, but it may cause
differences with tables created with older versions of PyFITS or Astropy.
astropy.io.misc
^^^^^^^^^^^^^^^
- The HDF5 reader can now refer to groups in the path as well as datasets;
if given a group, the first dataset in that group is read. [1159]
astropy.nddata
^^^^^^^^^^^^^^
- ``NDData`` objects have more helpful, though still rudimentary ``__str__`
and ``__repr__`` displays. [1313]
astropy.units
^^^^^^^^^^^^^
- Added 'cycle' unit. [1160]
- Extended units supported by the CDS formatter/parser. [1468]
- Added unicode an LaTeX symbols for liter. [1618]
astropy.wcs
^^^^^^^^^^^
- Redundant SCAMP distortion parameters are removed with SIP distortions are
also present. [1278]
- Added iterative implementation of ``all_world2pix`` that can be reliably
inverted. [1281]