- ←Prev
- AST
A Library for Handling
World Coordinate Systems
in Astronomy -
- TOC ↑
H Release Notes
H.1 Changes Introduced in V1.1
The following describes the most significant changes which occurred in the AST library
between versions V1.0 and V1.1 (not the most recent version):
-
(1)
- A new “How To…” section (§3) has been added to this document. It contains
simple recipies for performing commonly-required operations using AST.
-
(2)
- A new astUnformat function has been provided to read formatted coordinate
values for the axes of a Frame (§7.8). In essence, this function is the
inverse of astFormat. It may be used to decode user-supplied formatted
values representing coordinates, turning them into numerical values for
processing. Celestial coordinates may also be read using this function
(§8.7) and free-format input is supported.
-
(3)
- The Format attribute string used by a SkyFrame when formatting celestial
coordinate values now allows the degrees/hours field to be omitted, so that
celestial coordinates may be given in (e.g.) arc-minutes and/or arc-seconds
(§8.6). As a result, the degrees/hours field is no longer included by
default. A new “t” format specifier has been introduced (see the Format
attribute) to allow minutes and/or seconds of time to be specified if
required.
-
(4)
- A new function astMapBox has been introduced. This allows you to find the
extent of a “bounding box” which just encloses another box after it has
been transformed by a Mapping. A typical use might be to calculate the size
which an image would have if it were transformed by the Mapping.
-
(5)
- A new class of Object, the IntraMap, has been introduced (§20). This is a
specialised form of Mapping which encapsulates a privately-defined
coordinate transformation function (e.g. written in C) so that it may be
used like any other AST Mapping. This allows you to create Mappings that
perform any conceivable coordinate transformation.
-
(6)
- The internal integrity of a FrameSet is now automatically preserved
whenever changes are made to any attributes which affect the current Frame
(either by setting or clearing their values). This is accomplished by
appropriately re-mapping the current Frame to account for any change to the
coordinate system which it represents (§14.6).
-
(7)
- The internal structure of a FrameSet is now automatically tidied to
eliminate redundant nodes whenever any of its Frames is removed or
re-mapped. Automatic simplification of any compound Mappings which result
may also occur. The effect of this change is to prevent the accumulation of
unnecessary structure in FrameSets which are repeatedly modified.
-
(8)
- Some improvements have been made to the algorithms for simplifying compound
Mappings, as used by astSimplify.
-
(9)
- The textual representation used for some Objects (i.e. when they are
written to a Channel) has changed slightly, but remains compatible with
earlier versions of AST.
-
(10)
- Interfaces to the internal functions and macros used by AST for handling
memory and error conditions are now provided via the “ast.h” header file.
This is for the benefit of those writing (e.g.) new graphics interfaces for
AST.
-
(11)
- A problem has been fixed which could result when using astRead to read FITS
headers in which the CDELT value is zero. Previously, this could produce a
Mapping whose inverse transformation was not defined and this could
unnecessarily restrict the use to which it could be put. The problem has
been overcome by supplying a suitable small CDELT value for FITS axes which
have only a single pixel.
-
(12)
- A bug has been fixed which could occasionally cause a MatrixMap to be used
with the wrong Invert attribute value when it forms part of a compound
Mapping which is being simplified using astSimplify.
-
(13)
- A problem has been fixed which could prevent tick marks being drawn on a
coordinate axis close to a singularity in the coordinate system.
H.2 Changes Introduced in V1.2
The following describes the most significant changes which occurred in the AST library
between versions V1.1 and V1.2 (not the most recent version):
-
(1)
- A new function, astPolyCurve, has been introduced to allow more efficient
plotting of multiple geodesic curves (§21.3).
-
(2)
- A new set of functions, astResampleX,
has been introduced to perform resampling of gridded data such as images (i.e. re-gridding)
under the control of a geometrical transformation specified by a Mapping.
-
(3)
- The command-line options “pgp”
and “pgplot”,
which were previously synonymous when used with the “ast_link” and “ast_link_adam”
commands, are no longer synonymous. The option “pgp”
now causes linking with the Starlink version of PGPLOT (which uses GKS to generate
its output), while “pgplot”
links with the standard (or “native”) version of PGPLOT.
-
(4)
- The function astMapBox has been changed to execute more quickly, although
this has been achieved at the cost of some loss of robustness when used
with difficult Mappings.
-
(5)
- A new value of “FITS-IRAF” has been introduced for the Encoding attribute
of a FitsChan. This new encoding provides an interim solution to the
problem of storing coordinate system information in FITS headers, until the
proposed new FITS-WCS standard becomes stable.
-
(6)
- When a FrameSet is created from a set of FITS header cards (by reading from
a FitsChan using a “foreign” encoding), the base Frame of the resulting
FrameSet now has its Domain attribute set to “GRID”. This reflects the fact
that this Frame represents FITS data grid coordinates (equivalent to FITS
pixel coordinates–-see §7.13). Previously, this Domain value was not set.
-
(7)
- astFindFits now ignores trailing spaces in its keyword template.
-
(8)
- astPutFits now recognises “D” and “d” as valid exponent characters in
floating point numbers.
-
(9)
- The FitsChan class is now more tolerant of common minor violations of the
FITS standard.
-
(10)
- The FitsChan class now incorporates an improved test for the linearity of
Mappings, allowing more reliable conversion of AST data into FITS (using
“foreign” FITS encodings).
-
(11)
- Some further improvements have been made to the algorithms for simplifying
compound Mappings, as used by astSimplify.
-
(12)
- A new UnitRadius attribute has been added to the SphMap class. This allows
improved simplification of compound Mappings (CmpMaps) involving SphMaps
and typically improves performance when handling FITS world coordinate
information.
-
(13)
- A MatrixMap no longer propagates input coordinate values of AST__BAD
automatically to all output coordinates. If certain output coordinates do
not depend on the affected input coordinate(s) because the relevant matrix
elements are zero, then they may now remain valid.
-
(14)
- A minor bug has been corrected which could cause certain projections which
involve half the celestial sphere to produce valid coordinates for the
other (unprojected) half of the sphere as well.
-
(15)
- A bug has been fixed which could occasionally cause astConvert to think
that conversion between a CmpFrame and another Frame was possible when, in
fact, it wasn’t.
H.3 Changes Introduced in V1.3
The following describes the most significant changes which occurred in the AST library
between versions V1.2 and V1.3 (not the most recent version):
-
(1)
- A new set of functions, astResampleX,
has been introduced to provide efficient resampling of gridded data, such as
spectra and images, under the control of a geometrical transformation specified
by a Mapping. A variety of sub-pixel interpolation schemes are supported.
-
(2)
- A new class, PcdMap, has been introduced. This is a specialised form of
Mapping which implements 2-dimensional pincushion or barrel distortion.
-
(3)
- A bug has been fixed which could cause a FitsChan to produce too many
digits when formatting floating point values for inclusion in a FITS header
if the numerical value was in the range -0.00099999…to -0.0001.
-
(4)
- A bug has been fixed which could cause a FitsChan to lose the comment
associated with a string value in a FITS header.
-
(5)
- A FitsChan now reports an error if it reads a FITS header which identifies
a non-standard sky projection (previously, this was accepted without error
and a Cartesian projection used instead).
-
(6)
- A bug has been fixed which could prevent conversion between the coordinate
systems represented by two CmpFrames. This could only occur if the
CmpFrames contained a relatively large number of nested Frames.
-
(7)
- Further improvements have been made to the simplification of compound
Mappings, including fixes for several bugs which could cause indefinite
looping or unwanted error messages.
-
(8)
- Some memory leaks have been fixed.
-
(9)
- A small number of documentation errors have been corrected.
H.4 Changes Introduced in V1.4
The following describes the most significant changes which have occurred in the AST
library between versions V1.3 and V1.4 (not the most recent version):
-
(1)
- A new MathMap class has been introduced. This is a form of Mapping that
allows you to define coordinate transformations in a flexible and
transportable way using arithmetic operations and mathematical functions
similar to those available in C.
-
(2)
- WARNING—INCOMPATIBLE CHANGE. Transformation functions used with
the IntraMap class (see, for example, astIntraReg) now require a “this”
pointer as their first parameter. Existing implementations will not
continue to work correctly with this version of AST unless this parameter
is added. There is no need for existing software to make use of this
pointer, but it must be present.
This change has been introduced so that transformation functions can gain
access to IntraMap attributes.
-
(3)
- A new IntraFlag attribute has been added to the IntraMap class. This allows
the transformation functions used by IntraMaps to adapt to produce the
required transformation on a per-IntraMap basis (§20.9).
-
(4)
- The Plot attributes MajTickLen and MinTickLen, which control the length of
major and minor tick marks on coordinate axes, may now be subscripted using
an axis number. This allows tick marks of different lengths to be used on
each axis. It also allows tick marks to be suppressed on one axis only by
setting the length to zero.
-
(5)
- The value of the Plot attribute NumLab, which controls the plotting of
numerical labels on coordinate axes, no longer has any effect on whether
labelling of a coordinate grid is interior or exterior (as controlled by
the Labelling attribute).
-
(6)
- The FitsChan class now provides some support for the IRAF-specific “ZPX”
sky projection, which is converted transparently into the equivalent FITS
“ZPN” projection (see the description of the Encoding attribute for
details).
-
(7)
- The FitsChan class now recognises the coordinate system “ICRS”
(International Celestial Reference System) as equivalent to “FK5”. This is
an interim measure and full support for the (exceedingly small) difference
between ICRS and FK5 will be added at a future release.
Note that “ICRS” is not yet recognised as a coordinate system by other
classes such as SkyFrame, so this change only facilitates the importation
of foreign data.
-
(8)
- A bug in the FitsChan class has been fixed which could result in longitude
values being incorrect by 180 degrees when using cylindrical sky
projections, such as the FITS “CAR” projection.
-
(9)
- A bug in the FitsChan class has been fixed which could result in the FITS
sky projection parameters ProjP(0) to ProjP(9) being incorrectly named
PROJP1 to PROJP10 when written out as FITS cards.
-
(10)
- A bug in the FitsChan class has been fixed which could cause confusion
between the FITS-IRAF and FITS-WCS encoding schemes if both a CD matrix and
a PC matrix are erroneously present in a FITS header.
-
(11)
- Some minor memory leaks have been fixed.
-
(12)
- A small number of documentation errors have been corrected.
H.5 Changes Introduced in V1.5
The following describes the most significant changes which have occurred in the AST
library between versions V1.4 and V1.5 (not the most recent version):
-
(1)
- The FitsChan class has been modified to support the latest draft FITS WCS
standard, described in the two papers “Representation of world coordinates
in FITS” (E.W.Greisen and M.Calabretta, dated 30th November, 1999), and
“Representation of celestial coordinates in FITS” (M.Calabretta and
E.W.Greisen, dated 24th September, 1999). These are available at
http://www.cv.nrao.edu/fits/documents/wcs/wcs.html.
The FITS-WCS encoding now uses these updated conventions. The main changes
are:
- Rotation and scaling of pixel axes is now represented by a matrix of
CDj_i
keywords instead of a combination of PCjjjiii
and CDELTj
keywords.
- Projection parameters are now associated with particular axes and are
represented by
PVi_m
keywords instead of the PROJPm
keywords.
- The tangent plane projection (“TAN”) can now include optional
polynomial correction terms.
- An entire set of keywords must be supplied for each set of secondary
axis descriptions, and each such keyword must finish with a single
character indicating which set it belongs to. This means that keywords
which previously occupied eight characters have been shorten to seven
to leave room for this extra character. Thus
LONGPOLE
has become
LONPOLE
and RADECSYS
has become RADESYS
.
-
(2)
- Two new encodings have been added to the FitsChan class:
-
FITS-PC
- This encoding uses the conventions of the now superseded FITS WCS
paper by E.W.Greisen and M.Calabretta which used keywords
CDELTj
and
PCjjjiii
to describe axis scaling and rotation. These are the
conventions which were used by the FITS-WCS encoding prior to version
1.5 of AST. This encoding is provided to allow existing data which use
these conventions to be read. It should not in general be used to
create new data.
-
FITS-AIPS
- This encoding is based on the conventions described in the
document “Non-linear Coordinate Systems in AIPS” by Eric W. Greisen
(revised 9th September, 1994 and available by ftp from fits.cv.nrao.edu
/fits/documents/wcs/aips27.ps.Z). This encoding uses
CROTAi
and CDELTi
keywords to describe axis rotation and scaling.
-
(3)
- The FitsChan class now provides some support for the IRAF-specific “TNX” sky
projection, which is converted transparently into the equivalent FITS “TAN”
projection (see the description of the Encoding attribute for details).
-
(4)
- FrameSets originally read from a DSS encoded FITS header can now be written out
using the FITS-WCS encoding (a TAN projection with correction terms will be used)
in addition to the DSS encoding. The reverse is also possible: FrameSets
originally read from a FITS-WCS encoded FITS header and which use a TAN projection
can now be written out using the DSS encoding.
-
(5)
- The algorithm used by the FitsChan class to verify that a FrameSet conforms to the
FITS-WCS model has been improved so that FrameSets including more complex mixtures
of parallel and serial Mappings can be written out using the FITS-WCS
encoding.
-
(6)
- The FitsChan class has been changed so that long strings included in the
description of an Object can be saved and restored without truncation when using
the NATIVE encoding. Previously, very long Frame titles, mathematical expressions,
etc. were truncated if they exceeded the capacity of a single FITS header card.
They are now split over several header cards so that they can be restored
without truncation. Note, this facility is only available when using NATIVE
encoding.
-
(7)
- The FitsChan class has a new attribute called Warnings which can be used to
select potentially dangerous conditions under which warnings should be
issued. These conditions include (for instance) unsupported features within
non-standard projections, missing keywords for which default values will be used,
etc.
-
(8)
- The WcsMap class has been changed to support the changes made to the FITS-WCS
encoding in the FitsChan class:
- Projection parameters are now associated with a particular axis and are
specified using a new set of attributes called PVj_m. Here, “j” is the
index of an axis of WcsMap, and “m” is the index of the projection
parameter.
- The old attributes ProjP(0) to ProjP(9) are still available but are now
deprecated in favour of the new PVj_m attributes. They are interpreted
as aliases for PV(axlat)_0 to PV(axlat)_9, where “axlat” is the index
of the latitude axis.
- The GLS projection projection has been renamed as SFL, but the AST__GLS
type has been retained as an alias for AST__SFL.
H.6 Changes Introduced in V1.6
The following describes the most significant changes which have occurred in the AST
library between versions V1.5 and V1.6:
-
(1)
- The C interface to several methods (astTranN, astMark and astPolyCurve)
have been changed to make them easier to call from C++. Parameters which
previously had type “double (*)[]” have been changed to the simpler “double
*”. Using the old types may result in non-fatal compiler warnings, but
should not change the behaviour of the methods.
-
(2)
- A bug has been fixed in the Plot class which could cause groups of tick
marks to be skipped when using very small gaps.
-
(3)
- A bug has been fixed in the Plot class which could cause axes to be labeled
outside the visible window, resulting in no axes being visible.
-
(4)
- The FITS-WCS encoding used by the FitsChan class now includes the WCSNAME
keyword. When creating a FrameSet from FITS headers, the values of the
WCSNAME keywords are now used as the Domain names for the corresponding
Frames in the returned FrameSet. When writing a FrameSet to a FITS header
the Domain names of each Frame are stored in WCSNAME keywords in the
header.
-
(5)
- The FITS-WCS encoding used by the FitsChan class now attempts to retain the
identification letter associated with multiple axis descriptions. When
reading a FrameSet from a FITS header, the identification letter is stored
in the Ident attribute for each Frame. When writing a FrameSet to a FITS
header, the identification letter is read from the Ident attribute of each
Frame. The letter to associate with each Frame can be changed by assigning
a new value to the Frame’s Ident attribute.
-
(6)
- The FITS-WCS, FITS-PC, FITS-IRAF and FITS-AIPS encodings used by the
FitsChan class now create a SkyFrame with the System attribute set to
“Unknown” if the CTYPE keywords in the supplied header refers to an unknown
celestial coordinate system. Previously, a Frame was used instead of a
SkyFrame.
-
(7)
- The FITS-WCS, FITS-PC, FITS-IRAF and FITS-AIPS encodings used by the
FitsChan class no longer report an error if the FITS header contains no
CTYPE keywords. It is assumed that a missing CTYPE keyword implies that the
world coordinate system is linear and identically equal to “intermediate
world coordinates”.
-
(8)
- The new value “noctype” is now recognized by the Warnings attribute of the
FitsChan class. This value causes warnings to be issued if CTYPE keywords
are missing from foreign encodings.
-
(9)
- A new attribute called AllWarnings has been added to the FitsChan class.
This is a read-only, space separated list of all the known condition names
which can be specified in the Warnings attribute.
-
(10)
- The FitsChan class now attempts to assigns a Title to each Frame in a
FrameSet read using a foreign encoding. The Title is based on the Domain
name of the Frame. If the Frame has no Domain name, the default Title
supplied by the Frame class is retained.
-
(11)
- The FitsChan class uses the comments associated with CTYPE keywords as axis
labels when reading a foreign encoding. This behaviour has been modified so
that the default labels provided by the Frame class are retained (instead
of using the CTYPE comments) if any of the CTYPE comments are identical.
-
(12)
- A new “interpolation” scheme identified by the symbolic constant AST__BLOCKAVE
has been added to the AST_RESAMPLEX
set of functions. The new scheme calculates each output pixel value by finding
the mean of the input pixels in a box centred on the output pixel.
-
(13)
- The SkyFrame class can now be used to represent an arbitrary spherical
coordinate system by setting its System attribute to “Unknown”.
-
(14)
- The indices of the latitude and longitude axes of a SkyFrame can now be
found using new read-only attributes LatAxis and LonAxis. The effects of
any axis permutation is taken into account.
-
(15)
- A new attribute called Ident has been added to the Object class. This
serves the same purpose as the existing ID attribute, but (unlike ID) its
value is transferred to the new Object when a copy is made.
-
(16)
- A bug has been fixed which could prevent complex CmpFrames behaving
correctly (for instance, resulting in the failure of attempts to find a
Mapping between a CmpFrame and itself).
H.7 Changes Introduced in V1.7
The following describes the most significant changes which have occurred in the AST
library between versions V1.6 and V1.7:
-
(1)
- The Frame class has a new method called astAngle which returns the angle
subtended by two points at a third point within a 2 or 3 dimensional Frame.
-
(2)
- The Frame class has a new method called astOffset2 which calculates a
position which is offset away from a given starting point by a specified
distance along a geodesic curve which passes through the starting point at
a given position angle. It can only be used with 2-dimensional Frames.
-
(3)
- The Frame class has a new method called astAxDistance which returns the increment
between two supplied axis values. For axes belonging to SkyFrames, the returned
value is normalized into the range .
-
(4)
- The Frame class has a new method called astAxOffset which returns an axis value
a given increment away from a specified axis value. For axes belonging to SkyFrames,
the returned value is normalized into the range
(for latitude axes) or zero to
(for longitude axes).
-
(5)
- The Plot class has a new method called astGenCurve which allows generalised
user-defined curves to be drawn. The curve is defined by a user-supplied
Mapping which maps distance along the curve into the corresponding position
in the current Frame of the Plot. The new method then maps these current
Frame position into graphics coordinates, taking care of any
non-linearities or discontinuities in the mapping.
-
(6)
- The Plot class has a new method called astGrfSet which allows the
underlying primitive graphics functions to be selected at run-time.
Previously, the functions used by the Plot class to produce graphics could
only be selected at link-time, using the options of the ast_link command.
The new Plot method allows an application to over-ride the functions
established at link-time, by specifying alternative primitive graphics
routines. In addition, the two new Plot methods astGrfPush and astGrfPop
allow the current graphics routines to be saved and restore on a
first-in-last-out stack, allowing temporary changes to be made to the set
of registered graphics routines.
-
(7)
- The DrawAxes attribute of the Plot class can now be specified independantly
for each axis, by appending the axis index to the end of the attribute
name.
-
(8)
- A bug has been fixed in the Plot class which could result in axis labels
being drawn on inappropriate edges of the plotting box when using
“interior” labelling.
-
(9)
- A bug has been fixed in the IntraMap class which could cause IntraMaps to
be corrupted after transforming any points.
-
(10)
- Bugs have been fixed in the FitsChan class which could cause inappropriate
ordering of headers within a FitsChan when writing or reading objects using
NATIVE encodings.
-
(11)
- A bug has been fixed in the FitsChan class which could cause the celestial
longitude of a pixel to be estimated incorrectly by 180 degrees if the
reference point is at either the north or the south pole.
H.8 Changes Introduced in V1.8-2
The following describes the most significant changes which have occurred in the AST
library between versions V1.7 and V1.8-2:
-
(1)
- The SkyFrame class has a new attribute called NegLon which allows longitude values
to be displayed in the range
to ,
instead of the usual range zero to .
-
(2)
- Some new functions (astAngle, astAxAngle, astResolve, astOffset2,
astAxOffset, astAxDistance) have been added to the Frame class to allow
navigation of the coordinate space to be performed without needing to know
the underlying geometry of the co-ordinate system (for instance, whether it
is Cartesian or spherical).
Note, version 1.8-1 contained many of these facilities, but some have been
changed in version 1.8-2. Particularly, positions angles are now referred
to the second Frame axis for all classes of Frames (including SkyFrames),
and the astBear function has been replaced by astAxAngle.
H.9 Changes Introduced in V1.8-3
The following describes the most significant changes which occurred in the AST library
between versions V1.8-2 and V1.8-3:
-
(1)
- A new method called astDecompose has been added to the Mapping class which
enables pointers to be obtained to the component parts of CmpMap and
CmpFrame objects.
-
(2)
- Functions within proj.c and wcstrig.c have been renamed to avoid name
clashes with functions in more recent versions of Mark Calabretta’s wcslib
library.
H.10 Changes Introduced in V1.8-4
The following describes the most significant changes which occurred in the AST library
between versions V1.8-3 and V1.8-4:
-
(1)
- The FitsChan class has a new attribute called DefB1950 which can be used to
select the default reference frame and equinox to be used if a FitsChan
with foreign encoding contains no indication of the reference frame or
equinox.
-
(2)
- A bug has been fixed in the FitsChan class which could prevent astWrite
from creating a set of FITS headers from an otherwise valid FrameSet, when
when using FITS-AIPS encoding.
-
(3)
- A bug has been fixed in the FitsChan class which could cause astRead to
mis-interpret the FITS CROTA keyword when using FITS-AIPS encoding.
H.11 Changes Introduced in V1.8-5
The following describes the most significant changes which occurred in the AST library
between versions V1.8-4 and V1.8-5:
-
(1)
- The Plot class defines new graphical elements Axis1, Axis2, Grid1, Grid2,
NumLabs1, NumLabs2, TextLab1, TextLab2, Ticks1 and Ticks2. These allow
graphical attributes (colour, width, etc) to be set for each axis
individually. Previously, graphical attributes could only be set for both
axes together, using graphical elements Axes, Grid, NumLabs, TextLabs and
Ticks.
H.12 Changes Introduced in V1.8-7
The following describes the most significant changes which occurred in the AST library
between versions V1.8-5 and V1.8-7:
-
(1)
- A new attribute called CarLin has been added to the FitsChan class which
controls the way CAR projections are handled when reading a FrameSet from a
non-native FITS header. Some FITS writers use a CAR projection to represent
a simple linear transformation between pixel coordinates and celestial sky
coordinates. This is not consistent with the definition of the CAR
projection in the draft FITS-WCS standard, which requires the resultant
Mapping to include a 3D rotation from native spherical coordinates to
celestial spherical coordinates, thus making the Mapping non-linear.
Setting CarLin to 1 forces astRead to ignore the FITS-WCS standard and
treat any CAR projections as simple linear Mappings from pixel coordinates
to celestial coordinates.
-
(2)
- A bug has been fixed which could result in axis Format attributes set by
the user being ignored under certain circumstances.
-
(3)
- A bug in the way tick marks positions are selected in the Plot class has
been fixed. This bug could result in extra ticks marks being displayed at
inappropriate positions. This bug manifested itself, for instance, if the
Mapping represented by the Plot was a simple Cartesian to Polar Mapping. In
this example, the bug caused tick marks to be drawn at negative radius
values.
-
(4)
- A bug has been fixed which could prevent attribute settings from being read
correctly by astSet, etc., on certain platforms (MacOS, for instance).
H.13 Changes Introduced in V1.8-8
The following describes the most significant changes which occurred in the AST library
between versions V1.8-7 and V1.8-8:
-
(1)
- A bug has been fixed in the FitsChan class which could cause problems when
creating a FrameSet from a FITS header containing WCS information stored in
the form of Digitised Digitised Sky Survey (DSS) keywords. These problems
only occurred for DSS fields in the southern hemisphere, and resulted in
pixel positions being mapped to sky positions close to the corresponding
northern hemispshere field.
-
(2)
- A new method called astBoundingBox has been added to the Plot class. This
method returns the bounding box of the previous graphical output produced
by a Plot method.
-
(3)
- A new attribute called Invisible has been added to the Plot class which
suppresses the graphical output normally produced by Plot methods. All the
calculations needed to produce the normal output are still performed
however, and so the bounding box returned by the new astBoundingBox method
is still usable.
-
(4)
- Bugs have been fixed related to the appearance of graphical output produced
by the Plot class. These bugs were to do with the way in which graphical
elements relating to a specific axis (e.g.
Colour(axis1)
, etc.) interacted
with the corresponding generic element (e.g. Colour(axes)
, etc.).
H.14 Changes Introduced in V1.8-13
The following describes the most significant changes which occurred in the AST library
between versions V1.8-8 and V1.8-13:
-
(1)
- The FitsChan class has been modified so that LONPOLE keywords are only
produced by astWrite when necessary. For zenithal projections such as TAN,
the LONPOLE keyword can always take its default value and so is not
included in the FITS header produced by astWrite. Previously, the
unnecessary production of a LONPOLE keyword could prevent FrameSets being
written out using encodings which do not support the LONPOLE keyword (such
as FITS-IRAF).
-
(2)
- The FitsChan class has been modified to retain leading and trailing spaces
within COMMENT cards.
-
(3)
- The FitsChan class has been modified to only use CTYPE comments as axis
labels if all non-celestial axes have unique non-blank comments (otherwise
the CTYPE keyword values are used as labels).
-
(4)
- The FitsChan class has been modified so that it does not append a trailing
“Z” character to the end of DATE-OBS keyword values.
-
(5)
- The FitsChan class has been modified to use latest list of FITS-WCS
projections, as described in the FITS-WCS paper II, “Representations of
celestial coordinates in FITS” (Calabretta & Greisen, draft dated 23 April
2002). Support has been retained for the polynomial correction terms which
previous drafts have allowed to be associated with TAN projections.
-
(6)
- The WcsMap class has additional projection types of AST__TPN (which
implements a distorted TAN projection) and AST__SZP. The AST__TAN
projection type now represents a simple TAN projection and has no
associated projection parameters. In addition, the usage of projection
parameters has been brought into line with the the FITS-WCS paper II.
-
(7)
- The WcsMap class has been modified so that a “get” operation on a
projection parameter attribute will return the default value defined in the
FITS-WCS paper II if no value has been set for the attribute. Previously, a
value of AST__BAD was returned in such a situation.
-
(8)
- The Frame class has new attributes Top(axis) and Bottom(axis) which allow a
“plottable range” to be specified for each Frame axis. The grid produced by
the astGrid method will not extend beyond these limits.
H.15 Changes Introduced in V2.0
Note, Frame descriptions created using AST V2.0 will not be readable by applications
linked with earlier versions of AST. This applies to Frame descriptions created
using:
Applications must be re-linked with AST V2.0 in order to be able to read Frame
descriptions created by AST v2.0.
The following describes the most significant changes which have occurred in the AST
library between versions V1.8-13 and V2.0 (the current version):
-
(1)
- The default value for the Domain attribute provided by the CmpFrame class
has been changed from “CMP” to a string formed by concatenating the Domain
attributes of the two component Frames, separated by a minus sign. If both
component Domains are blank, then the old default of “CMP” is retained for
the CmpFrame Domain.
-
(2)
- The implementation of the astWrite function within the FitsChan class has
been modified. It will now attempt to produce a set of FITS header cards to
describe a FrameSet even if the number of axes in the Current Frames is
greater than the number in the Base Frame (that is, if there are more WCS
axes than pixel axes). This has always been possible with NATIVE encoding,
but has not previously been possible for foreign encodings. The WCSAXES
keyword is used to store the number of WCS axes in the FITS header.
-
(3)
- Another change to the astWrite function within the FitsChan class is that
the ordering of “foreign” axes (i.e. CTYPE keywords) is now chosen to make
the CD (or PC) matrix as diagonal as possible - any element of axis
transposition is removed by this re-ordering as recommended in FITS-WCS
paper I. Previously the ordering was determined by the order of the axes in
the Current Frame of the supplied FrameSet. This change does not affect
NATIVE encoding.
-
(4)
- Support for spectral coordinate systems has been introduced throught the
addition of two new classes, SpecFrame and SpecMap. The SpecFrame is a
1-dimensional Frame which can be used to describe positions within an
electromagnetic spectrum in various systems (wavelength, frequency, various
forms of velocity, etc.) and referred to various standards of rest
(topocentric, geocentric, heliocentric LSRK, etc.). The SpecMap is a
Mapping which can transform spectral axis values between these various
systems and standards of rest. Note, FitsChans which have a foreign
encoding (i.e. any encoding other than NATIVE) are not yet able to read or
write these new classes.
-
(5)
- Facilities have been added to the Frame class which allow differences in axis
units to be taken into account when finding a Mapping between two Frames. In
previous versions of AST, the Unit attribute was a purely descriptive item intended
only for human readers - changing the value of Unit made no difference to the
behaviour of the Frame. As of version 2.0, the Unit attribute can influence the
nature of the Mappings between Frames. For instance, if the astFindrame or astConvert
method is used to find the Mapping between an Axis with Unit set to “m” and another
Axis with Unit set to “km”, then the method will return a ZoomMap which introduces
a scaling factor of 0.001 between the two axes. These facilities assume that
units are specified following the rules included in FITS-WCS paper I (Representation
of World Coordinates in FITS, Greisen & Calabretta).
In order to minimise the risk of breaking existing software, the default
behaviour for simple Frames is to ignore the Unit attribute (i.e. to retain
the previous behaviour). However, the new Frame method astSetActiveUnit may
be used to “activate” (or deactivate) the new facilities within a specific
Frame. Note, the new SpecFrame class is different to the simple Frame class
in that the new facilities for handling units are always active within a
SpecFrame.
-
(6)
- The System and Epoch attributes fo the SkyFrame class have been moved to
the parent Frame class. This enables all sub-classes of Frame (such as the
new SpecFrame class) to share these attributes, and to provide suitable
options for each class.
-
(7)
- The Frame class has a new attribute called AlignSystem, which allows
control over the alignment process performed by the methods astFindFrame
and astConvert.
-
(8)
- The CmpFrame class has been modified so that attributes of a component Frame
can be accessed without needing to extract the Frame first. To do this, append
an axis index to the end of the attribute name. For instance, if a CmpFrame contains
a SpecFrame and a SkyFrame (in that order), then the StdOfRest attribute of the
SpecFrame can be referred to as the “StdOfRest(1)” attribute of the CmpFrame.
Likewise, the Equinox attribute of the SkyFrame can be accessed as the “Equinox(2)”
(or equivalently “Equinox(3)”) attribute of the CmpFrame. The “System(1)” attribute
of the CmpFrame will refer to the System attribute of the SpecFrame, whereas
the “System(2)” and “System(3)” attributes of the CmpFrame will refer to the
System attribute of the SkyFrame (the “System” attribute without an axis specifier
will refer to the System attribute of the CmpFrame as a whole, since System is
an attribute of all Frames, and a CmpFrame is a Frame and so has its own System
value which is independant of the System attributes of its component Frames).
-
(9)
- The algorithms used by the Plot class for determining when to omit
overlapping axis labels, and the abbreviation of redundant leading fields
within sexagesimal axis labels, have been improved to avoid some anomolous
behaviour in previous versions.
-
(10)
- The curve drawing algorithm used by the Plot class has been modified to
reduce the chance of it “missing” small curve sections, such as may be
produced if a grid line cuts across the plot very close to a corner.
Previously, these missed sections could sometimes result in axis labels
being omitted.
-
(11)
- A new function (astVersion) has been added to return the version of the AST
library in use.
-
(12)
- Bugs have been fixed in the Plot class which caused serious problems when
plotting high precision data. These problems could range from the omission
of some tick marks to complete failure to produce a plot.
Programs which are statically linked will need to be re-linked in order to take
advantage of these new facilities.
H.16 Changes Introduced in V3.0
The following describes the most significant changes which occurred in the AST library
between versions V2.0 and V3.0:
-
(1)
- Many changes have been made in the FitsChan class in order to bring the
FITS-WCS encoding into line with the current versions of the FITS-WCS
papers (see http://www.atnf.csiro.au/people/mcalabre/WCS/):
- The rotation and scaling of the pixel axes may now be specified using
either CDi_j keywords, or PCi_j and CDELTj keywords. A new attribute
called CDMatrix has been added to the FitsChan class to indicate which
set of keywords should be used when writing a FrameSet to a FITS-WCS
header.
- The FITS-WCS encoding now supports most of the conventions described in
FITS-WCS paper III for the description of spectral coordinates. The
exceptions are that the SSYSOBS keyword is not supported, and WCS
stored in tabular form (as indicated by the “-TAB” algorithm code) is
not supported.
- User-specified fiducial points for WCS projections are now supported by
FitsChans which use FITS-WCS encoding. This use keywords PVi_0, PVi_1
and PVi_2 for the longitude axis.
- When reading a FITS-WCS header, a FitsChan will now use keywords PVi_3
and PVi_4 for the longitude axis (if present) in preference to any
LONPOLE and LATPOLE keywords which may be present. When writing a
FITS-WCS header, both forms are written out.
- The number of WCS axes is stored in the WCSAXES keyword if its value
would be different to that of the NAXIS keyword.
- Helio-ecliptic coordinates are now supported by FitsChans which use
FITS-WCS encoding. This uses CTYPE codes “HLON” and “HLAT”. The
resulting SkyFrame will have a System value of “HELIOECLIPTIC”, and all
the usual facilities, such as conversion to other celestial systems,
are available.
- The FITS-WCS encoding now supports most of the conventions described in
FITS-WCS paper III for the description of spectral coordinates. The
exceptions are that the SSYSOBS keyword is not supported, and WCS
stored in tabular form (as indicated by the “-TAB” algorithm code) is
not supported.
- When reading a FITS-WCS header, a FitsChan will now ignore any distortion
codes which are present in CTYPE keywords. Here, a “distortion code” is the
final group of four characters in a CTYPE value of the form “xxxx-yyy-zzz”,
as described in FITS-WCS paper IV. The exception to this is that the “-SIP”
distortion code (as used by the Spitzer Space Telescope project - see http://ssc.spitzer.caltech.edu/postbcd/doc/shupeADASS.pdf)
is interpreted correctly and results in a PolyMap being used to represent
the distortion in the resulting FrameSet. Note, “-SIP” distortion codes can
only be read, not written. A FrameSet which uses a PolyMap will not in general
be able to be written out to a FitsChan using any foreign encoding (although
NATIVE encoding can of course be used).
- The Warnings attribute of the FitsChan class now accepts values
“BadVal” (which gives warnings about conversion errors when reading
FITS keyword values), “Distortion” (which gives warnings about
unsupported distortion codes within CTYPE values), and “BadMat” (which
gives a warning if the rotation/scaling matrix cannot be inverted).
- When writing a FrameSet to a FitsChan which uses a non-Native encoding,
the comment associated with any card already in the FitsChan will be
retained if the keyword value being written is the same as the keyword
value already in the FitsChan.
- A FrameSet which uses the non-FITS projection type AST__TPN (a TAN
projection with polynomial distortion terms) can now be written to a
FitsChan if the Encoding attribute is set to FITS-WCS. The standard
“-TAN” code is used within the CTYPE values, and the distortion
coefficients are encoded in keywords of the form “ QVi_ma”, which are
directly analogous to the standard “PVi_ma” projection parameter
keywords. Thus a FITS reader which does not recognise the QV keywords
will still be able to read the header, but the distortion will be
ignored.
- The default value for DefB1950 attribute now depends on the value of
the Encoding attribute.
- A new appendix has been added to SUN/210 and SUN/211 giving details of
the implementation provided by the FitsChan class of the conventions
contained in the first four FITS-WCS papers.
-
(2)
- The SkyFrame class now supports two new coordinate systems “ICRS” and
“HELIOECLIPTIC”. The default for the System attribute for SkyFrames has been
changed from “FK5” to “ICRS”.
-
(3)
- The astRate function has been added which allows an estimate to be made of the
rate of change of a Mapping output with respect to one of the Mapping
inputs.
-
(4)
- All attribute names for Frames of any class may now include an optional axis
specifier. This includes those attributes which describe a property of the whole
Frame. For instance, the Domain attribute may now be specified as “Domain(1)” in
addition to the simpler “Domain”. In cases such as this, where the attribute
describes a property of the whole Frame, axis specifiers will usually be
ignored. The exception is that a CmpFrame will use the presence of an
axis specifier to indicate that the attribute name relates to the primary
Frame containing the specified axis, rather than to the CmpFrame as a
whole.
-
(5)
- A new subclass of Mapping, the PolyMap, has been added which performs a general
N-dimensional polynomial mapping.
-
(6)
- A new subclass of Mapping, the GrismMap, has been added which models the spectral
dispersion produced by a grating, prism or grism.
-
(7)
- A new subclass of Mapping, the ShiftMap, has been added which adds constant values
onto all coordinates (this is equivalent to a WinMap with unit scaling on all
axes).
-
(8)
- Minor bugs have been fixed within the Plot class to do with the choice and
placement of numerical axis labels.
-
(9)
- The SphMap class has a new attribute called PolarLong which gives the longitude
value to be returned when a Cartesian position corresponding to either the north
or south pole is transformed into spherical coordinates.
-
(10)
- The WcsMap class now assigns a longitude of zero to output celestial coordinates
which have a latitude of plus or minus 90 degrees.
-
(11)
- The NatLat and NatLon attributes of the WcsMap class have been changed so that
they now return the fixed native coordinates of the projection reference
point, rather than the native coordinates of the user-defined fiducial
point.
-
(12)
- Notation has been changed in both the WcsMap and FitsChan classes to reflect the
convention used in the FITS-WCS papers that index “i” refers to a world coordinate
axis, and index “j” refers to a pixel axis.
-
(13)
- Changes have been made to several Mapping classes in order to allow the
astSimplify function to make simplifications in a CmpMap which previously were not
possible.
-
(14)
- The SlaMap class has been extended by the addition of conversions between FK5 and
ICRS coordinates, and between FK5 and helio-ecliptic coordinates.
-
(15)
- The SpecMap class has been changed to use the equation for the refractive index of
air as given in the current version of FITS-WCS paper III. Also, the forward and
inverse transformations between frequency and air-wavelength have been
made more compatible by using an iterative procedure to calculate the
inverse.
H.17 Changes Introduced in V3.1
The following describes the most significant changes which have occurred in the AST
library between versions V3.0 and V3.1 (the current version):
-
(1)
- Addition of a new class called XmlChan - a Channel which reads and writes
AST objects in the form of XML.
-
(2)
- A bug has been fixed in the Plot class which could cause incorrect
graphical attributes to be used for various parts of the plot if either
axis has no tick marks (i.e. if both major and minor tick marks have zero
length).
Programs which are statically linked will need to be re-linked in order to take
advantage of these new facilities.
H.18 Changes Introduced in V3.2
The following describes the most significant changes which have occurred in the AST
library between versions V3.1 and V3.2:
-
(1)
- A new function astPutCards has been added to the FitsChan class. This
allows multiple concatenated header cards to be stored in a FitsChan in a
single call, providing an alternative to the existing astPutCards function.
-
(2)
- Some signficant changes have been made to the simplification of Mappings
which should resultin a greater degree of simplication taking place.Some
bugs have also been fixed which could result in an infinite loop being
entered when attempting to simplify certain Mappings.
-
(3)
- The FitsChan class now translates the spectral algorithm codes “-WAV”,
“-FRQ” and “-VEL” (specified in early drafts of paper III) to the
corresponding “-X2P” form when reading a spectral axis description from a
set of FITS header cards.
-
(4)
- A bug has been fixed in the FitsChan class which could cause keywords
associated with alternate axis descriptions to be mis-interpreted.
-
(5)
- The Plot class now provides facilities for modifying the appearance of
sub-strings within text strings such as axis labels, titles, etc, by
producing super-scripts, sub-scripts, changing the font colour, size, etc.
See attribute Escape.
-
(6)
- The default value of the Tol attribute of the Plot class has been changed
from 0.001 to 0.01. This should not usually cause any significant visible
change to the plot, but should make the plotting faster. You may need to
set a lower value for Tol if you are producing a particularly large plot.
-
(7)
- The algorithm for finding the default value for the Gap attribute has been
changed. This attribute specifies the gap between major axis values in an
annotated grid drawn by the Plot class. The change in algorithm may cause
the default value to be different to previous versions in cirtain
circumstances.
-
(8)
- Some bugs have been fixed in the Plot class which could cause the system to
hang for a long time while drawing certain all-sky grids (notable some of
the FITS Quad-cube projections).
-
(9)
- The SkyAxis class has extended the Format attribute by the addition of the
“g” option. this option is similar to the older “l” option in that it
results in characters (“h”, “m”, “s”, etc) being used as delimiters between
the sexagesimal fields of the celestial position. The difference is that
the “g” option includes graphics escape sequences in the returned formatted
string which result in the field delimiter characters being drawn as
super-scripts when plotted as numerical axis values by a Plot.
-
(10)
- The Plot class has been extended to include facilities for producing
logarithmic axes. See attributes LogPlot, LogTicks, LogGap and LogLabel.
-
(11)
- New functions astGCap and astGScales have been added to the interface defined
by file grf.h. The ast_link command has been modified so that the -mygrf switch
loads dummy versions of the new grf functions. This means that applications should
continue to build without any change. However, the facilities for interpreting
escape sequences within strings drawn by the Plot class will not be available
unless the new grf functions are implemented. If you choose to implement them,
you should modify your linking procedure to use the -grf switch in place of the
older -mygrf switch. See the description of the ast_link command for details
of the new switches. Also note that the astGQch function, whilst included in
verb+grf.h+ in pervious versions of AST, was not actually called. As of this
version of AST, calls are made to the astGQch function, and so any bugs in the
implementation of astGQch may cause spurious behaviour when plotting text strings.
-
(12)
- A new ’static’ method called astEscapes has been added which is used to
control and enquire whether astGetC and astFormat will strip any graphical
escape sequences which may be present out of the returned value.
-
(13)
- New attribute XmlPrefix has been added to the XmlChan class. It allows XML
written by the XmlChan class to include an explicit namespace prefix on
each element.
-
(14)
- New attribute XmlFormat has been added to the XmlChan class. It specifies
the format in which AST objects should be written.
-
(15)
- A new class of Mapping, the TranMap, has been introduced. A TranMap takes
its forward transformation from an existing Mapping, and its inverse
transformation from another existing Mapping.
-
(16)
- A bug has been fixed in WcsMap which caused error reports to include
erroneous axis numbers when referring to missing parameter values.
H.19 Changes Introduced in V3.3
The following describes the most significant changes which have occurred in the AST
library between versions V3.2 and V3.3:
-
(1)
- Options have been added to the SkyFrame class which allows the origin of
celestial coordinates to be moved to any specified point. See the new
attributes SkyRef, SkyRefIs, SkyRefP and AlignOffset.
-
(2)
- An option has been added to the FitsChan class which allows extra Frames
representing cartesian projection plane coordinates (“intermediate world
coordinates” in the parlance of FITS-WCS) to be created when reading WCS
information from a foreign FITS header. This option is controlled by a new
attribute called Iwc.
-
(3)
- The FitsChan class which been modified to interpret FITS-WCS CAR projection
headers correctly if the longitude reference pixel (CRPIX) is very large.
-
(4)
- The FITS-AIPS++ encoding in the FitsChan class now recognised spectral axes
if they conform to the AIPS convention in which the spectral axis is
descirbed by a CTYPE keyword od the form "AAAA-BBB" where “AAAA” is one of
FREQ, VELO or FELO, and “BBB” is one of LSR, LSD, HEL or OBS. Such spectral
axes can be both read and written.
-
(5)
- The FitsChan class now has a FITS-AIPS++ encoding which represents WCS
information using FITS header cards recognised by the AIPS++ project.
Support for spectral axes is identical to the FITS-AIPS encoding.
-
(6)
- The organisation of the AST distribution and the commands for building it
have been changed. Whereas AST used to be built and installed with
./mk build; ./mk install, it now builds using the more standard idiom
./configure; make; make install. The installation location is controlled by
the --prefix argument to ./configure (as is usual for other packages which
use this scheme). Note that the INSTALL environment variable now has a
different meaning to that which it had before, and it should generally be
unset. Also, there is no need to set the SYSTEM variable.
-
(7)
- Shared libraries are now installed in the same directory as the static
libraries. In addition, links to sharable libraries are installed with
names which include version information, and “libtool libraries” are also
installed (see http://www.gnu.org/software/libtool/manual.html).
-
(8)
- The ast_dev script has been removed. Instead, the location of the AST
include files should be specified using the -I option when compiling.
H.20 Changes Introduced in V3.4
The following describes the most significant changes which have occurred in the AST
library between versions V3.3 and V3.4:
-
(1)
- The Mapping class has a new method (astLinearApprox) which calculates the
co-efficients of a linear approximation to a Mapping.
-
(2)
- The Format attribute for simple Frames and SkyFrames has been extended. It
has always been possible, in both classes, to specify a precision by
including a dot in the Format value followed by an integer (e.g. “dms.1”
for a SkyFrame, or “%.10g” for a simple Frame). The precision can now also
be specified using an asterisk in place of the integer (e.g. “dms.*” or
“%.*g”). This causes the precision to be derived on the basis of the Digits
attribute value.
-
(3)
- The Plot class has been changed so that the default value used for the
Digits attribute is chosen to be the smallest value which results in no
pair of adjacent labels being identical. For instance, if an annotated grid
is being drawn describing a SkyFrame, and the Format(1) value is set to
“hms.*g” (the “g” causes field delimiters to be drawn as superscripts), and
the Digits(1) value is unset, then the seconds field will have a number of
decimal places which results in no pair of labels being identical.
-
(4)
- Addition of a new class classed DSBSpecFrame. This is a sub-class of
SpecFrame which can be used to describe spectral axes associated with dual
sideband spectral data.
-
(5)
- The FitsChan class will now read headers which use the old “-GLS”
projection code, converting them to the corresponding modern “-SFL” code,
provided that the celestial axes are not rotated.
-
(6)
- The FitsChan class has a new Encoding, “FITS-CLASS”, which allows the
reading and writing of FITS headers using the conventions of the CLASS
package - see
http://www.iram.fr/IRAMFR/GILDAS/doc/html/class-html/class.html).
H.21 Changes Introduced in V3.5
The following describes the most significant changes which have occurred in the AST
library between versions V3.4 and V3.5:
-
(1)
- AST now provides facilities for representing regions of various shapes
within a coordinate system. The Region class provides general facilities
which are independent of the specific shape of region being used. Various
sub-classes of Region are also now available which provide means of
creating Regions of specific shape. Facilities provided by the Region class
include testing points to see if they are inside the Region, testing two
Regions for overlap, transforming Regions from one coordinate system to
another etc.
-
(2)
- A new class of 1-dimensional Frame called FluxFrame has been added which
can be used to describe various systems for describing ovserved value at a
single fixed spectral position.
-
(3)
- A new class of 2-dimensional Frame called SpecFluxFrame has been added
which can be used to describe a 2-d frame spanned by a spectral position
axis and and an observed value axis.
-
(4)
- A new class of Mapping called RateMap has been added. A RateMap
encapsulates a previously created Mapping. The inputs of the RateMap
correspond to the inputs of the encapsulated Mapping. All RateMaps have
just a single output which correspond to the rate of change of a specified
output of the encapsulated Mapping with respect to a specified input.
-
(5)
- The SkyFrame class now supports a value of “J2000” for System. This system
is an equatorial system based on the mean dynamical equator and equinox at
J2000, and differs slightly from an FK5(J2000) system.
-
(6)
- A new class called KeyMap has been added. A KeyMap can be used to store a
collection of vector or scalar values or Objects, indexed by a character
string rather than an integer.
-
(7)
- The parameter list for the astRate method of the Mapping class has been
modified. It no longer returns a second derivative estimate. Existing code
which uses this method will need to be changed.
-
(8)
- Methods (astSetFits<X>) have been added to the FitsChan class to allow
values for named keywords to be changed or added.
H.22 Changes Introduced in V3.6
The following describes the most significant changes which occurred in the AST library
between versions V3.5 and V3.6:
-
(1)
- If the Format attribute associated with an axis of a SkyFrame starts with a
percent character (“%”), then axis values are now formatted and unformatted
as a decimal radians value, using the Format syntax of a simple Frame.
-
(2)
- The Plot class has a new attribute called Clip which controls the clipping
performed by AST at the plot boundary.
-
(3)
- The keys used to label components of the PolyMap structure when a PolyMap
is written out through a Channel have been changed. The new keys are
shorter than the old keys and so can written succesfully to a FitsChan. The
new PolyMap class always writes new styles keys but can read either old or
new style keys. Consequently, PolyMap dumps written by this version of AST
cannot be read by older versions of AST.
-
(4)
- A mimimal cut down subset of the C version of SLALIB is now included with
the AST distribution and built as part of building AST. This means that it
is no longer necessary to have SLALIB installed separately at your site.
The SLALIB code included with AST is distrubuted under the GPL. The default
behaviour of the ast_link script is now to link with this internal slalib
subset. However, the “-csla” option can still be used to force linking with
an external full C SLALIB library. A new option “-fsla” has been introduced
which forces linking with the external full Fortran SLALIB library.
H.23 Changes Introduced in V3.7
The following describes the most significant changes which occurred in the AST library
between versions V3.6 and V3.7:
-
(1)
- Support for time coordinate systems has been introduced throught the
addition of two new classes, TimeFrame and TimeMap. The TimeFrame is a
1-dimensional Frame which can be used to describe moments in time (either
absolute or relative) in various systems (MJD, Julian Epoch, etc.) and
referred to various time scales (TAI, UTC, UT1, GMST, etc). The TimeMap is
a Mapping which can transform time values between these various systems and
time scales. Note, FitsChans which have a foreign encoding (i.e. any
encoding other than NATIVE) are not able to read or write these new
classes.
H.24 Changes Introduced in V4.0
The following describes the most significant changes which occurred in the AST library
between versions V3.7 and V4.0:
-
(1)
- Experimental support for reading IVOA Space-Time-Coordinates (STC-X)
descriptions using the XmlChan class has been added. Support is included
for a subset of V1.20 of the draft STC specification.
-
(2)
- A new set of methods (AST_REBIN<X>/astRebin<X>) has been added to the
Mapping class. These are flux-conserving alternatives to the existing
AST_RESAMPLE<X>/astResample<X> methods.
H.25 Changes Introduced in V4.1
The following describes the most significant changes which occurred in the AST library
between versions V4.0 and V4.1:
-
(1)
- A new control flag has been added to the AST_RESAMPLE<X>/astResample<X>
functions which produces approximate flux conservation.
-
(2)
- New constants AST__SOMB and AST__SOMBCOS have been added to ast.h. These specify
kernels for astResample and astRebin based on the “Sombrero” function (
where
is the first order Bessel function of the first kind).
-
(3)
- The SkyFrame class now supports a System value of AZEL corresponding to
horizon (azimuth/elevation) coordinates.
-
(4)
- The FitsChan class allows the non-standard strings “AZ–” and “EL–” to be
used as axis types in FITS-WCS CTYPE keyword values.
-
(5)
- The Frame class now has attributes ObsLon and ObsLat to specify the
geodetic longitude and latitude of the observer.
-
(6)
- The ClockLon and ClockLat attributes have been removed from the TimeFrame
class. Likewise, the GeoLon and GeoLat attributes have been removed from
the SpecFrame class. Both classes now use the ObsLon and ObsLat attributes
of the parent Frame class instead. However, the old attribute names can be
used as synonyms for ObsLat and ObsLon. Also, dumps created using the old
scheme can be read succesfully by AST V4.1 and converted to the new form.
-
(7)
- A new function astMapSplit has been added to the Mapping class. This splits
a Mapping into two component Mappings which, when combined in parallel, are
equivalent to the original Mapping.
-
(8)
- The default value for the SkyRefIs attribute has been changed from “Origin”
to “Ignored”. This means that if you want to use a SkyFrame to represent
offsets from some origin position, you must now set the SkyRefIs attribute
explicitly to either “Pole” or “Origin”, in addition to assigning the
required origin position to the SkyRef attribute.
H.26 Changes Introduced in V4.2
The following describes the most significant changes which occurred in the AST library
between versions V4.1 and V4.2:
-
(1)
- The SideBand attribute of the DSBSpecFrame class can now take the option
“LO” in addition to “USB” and “LSB”. The new option causes the DSBSpecFrame
to represent the offset from the local oscillator frequency, rather than
either of the two sidebands.
-
(2)
- The FitsChan class has been changed so that it writes out a VELOSYS keyword
when creating a FITS-WCS encoding (VELOSYS indicates the topocentric
apparent velocity of the standard of rest). FitsChan also strips out
VELOSYS keywords when reading a FrameSet from a FITS-WCS encoding.
-
(3)
- The FitsChan class has a new method called astRetainFits that indicates
that the current card in the FitsChan should not be stripped out of the
FitsChan when an AST Object is read from the FitsChan. Unless this method
is used, all cards that were involved in the creation of the AST Object
will be stripped from the FitsChan afte a read operation.
-
(4)
- A problem with unaligned memory access that could cause bus errors on
Solaris has been fixed.
-
(5)
- A new read-only attribute called ObjSize has been added to the base Object
Class. This gives the number of bytes of memory occupied by the Object.
Note, this is the size of the internal in-memory representation of the
Object, not the size of the textual representation produced by writing the
Object out through a Channel.
-
(6)
- A new function astTune has been added which can be used to get and set
global AST tuning parameters. At the moment there are only two such
parameter, both of which are concerned with memory management within AST.
-
(7)
- A new method called astTranGrid has been added to the Mapping class. This
method creates a regular grid of points covering a rectangular region
within the input space of a Mapping, and then transforms this set of points
into the output space of the Mapping, using a piecewise-continuous linear
approximation to the Mapping if appropriate in order to achive higher
speed.
-
(8)
- A new subclass of Mapping has been added called SwitchMap. A SwitchMap
represents several alternate Mappings, each of which is used to transforms
input positions within a different region of the input coordinate space.
-
(9)
- A new subclass of Mapping has been added called SelectorMap. A SelectorMap
tests each input position to see if it falls within one of several Regions.
If it does, the index of the Region containing the input position is
returned as the Mapping output.
-
(10)
- The behaviour of the astConvert method when trying to align a CmpFrame with
another Frame has been modified. If no conversion between positions in the
Frame and CmpFrame can be found, an attempt is now made to find a
conversion between the Frame and one of two component Frames contained
within the CmpFrame. Thus is should now be possible to align a SkyFrame
with a CmpFrame containing a SkyFrame and a SpecFrame (for instance). The
returned Mapping produces bad values for the extra axes (i.e. for the
SpecFrame axis in the above example).
-
(11)
- The “ast_link_adam” and “ast_link” scripts now ignore the -fsla and -csla
options, and always link against the minimal cut-down version of SLALIB
distributed as part of AST.
H.27 Changes Introduced in V4.3
The following describes the most significant changes which occurred in the AST library
between versions V4.2 and V4.3:
-
(1)
- The astGetFitsS function now strips trailing white space from the returned
string, if the original string contains 8 or fewer characters
-
(2)
- The SpecFrame class has a new attribute called SourceSys that specified
whether the SourceVel attribute (which specifies the rest frame of the
source) should be accessed as an apparent radial velocity or a redshift.
Note, any existing software that assumes that SourceVel always represents a
velocity in km/s should be changed to allow for the possibility of
SourceVel representing a redshift value.
H.28 Changes Introduced in V4.4
The following describes the most significant changes which occurred in the AST library
between versions V4.3 and V4.4:
-
(1)
- The astFindFrame function can now be used to search a CmpFrame for an instance
of a more specialised class of Frame (SkyFrame, TimeFrame, SpecFrame, DSBSpecFrame
or FluxFrame). That is, if an instance of one of these classes is used as the
“template” when calling astFindFrame, and the “target” being searched is a CmpFrame
(or a FrameSet in which the current Frame is a CmpFrame), then the component
Frames within the CmpFrame will be searched for an instance of the supplied template
Frame, and, if found, a suitable Mapping (which will include a PermMap to select
the required axes from the CmpFrame) will be returned by astFindFrame. Note,
for this to work, the MaxAxes and MinAxes attributes of the template Frame must
be set so that they cover a range that includes the number of axes in the target
CmpFrame.
-
(2)
- The SkyFrame, SpecFrame, DSBSpecFrame, TimeFrame and FluxFrame classes now
allow the MaxAxes and MinAxes attributes to be set freely to any value. In
previous versions of AST, any attempt to change the value of MinAxes or
MaxAxes was ignored, resulting in them always taking the default values.
-
(3)
- The DSBSpecFrame class has a new attribute called AlignSB that specifies
whether or not to take account of the SideBand attributes when aligning two
DSBSpecFrames using astConvert.
-
(4)
- The Frame class has a new attribute called Dut1 that can be used to store a
value for the difference between the UT1 and UTC timescales at the epoch
referred to by the Frame.
-
(5)
- The number of digits used to format the Frame attributes ObsLat and ObsLon
has been increased.
-
(6)
- The use of the SkyFrame attribute AlignOffset has been changed. This
attribute is used to control how two SkyFrames are aligned by astConvert.
If the template and target SkyFrames both have a non-zero value for
AlignOffset, then alignment occurs between the offset coordinate systems
(that is, a UnitMap will always be used to align the two SkyFrames).
-
(7)
- The Plot class has a new attribute called ForceExterior that can be used to
force exterior (rather than interior) tick marks to be produced. By
default, exterior ticks are only produced if this would result in more than
3 tick marks being drawn.
-
(8)
- The TimeFrame class now supports conversion between angle based timescales
such as UT1 and atomic based timescales such as UTC.
H.29 Changes Introduced in V4.5
The following describes the most significant changes that occurred in the AST library
between versions V4.4 and V4.5:
-
(1)
- All FITS-CLASS headers are now created with a frequency axis. If the
FrameSet supplied to astWrite contains a velocity axis (or any other form
of spectral axis) it will be converted to an equivalent frequency axis
before being used to create the FITS-CLASS header.
-
(2)
- The value stored in the FITS-CLASS keyword “VELO-LSR” has been changed from
the velocity of the source to the velocity of the reference channel.
-
(3)
- Addition of a new method call astPurgeWCS to the FitsChan class. This
method removes all WCS-related header cards from a FitsChan.
-
(4)
- The Plot class has a new attribute called GrfContext that can be used to
comminicate context information between an application and any graphics
functions registered with the Plot class via the astGrfSet function.
-
(5)
- Functions registered with the Plot class using astGrfSet now take a new
additional integer parameter, “grfcon”. The Plot class sets this parameter
to the value of the Plot’s GrfContext attribute before calling the graphics
function. NOTE, THIS CHANGE WILL REQUIRE EXISTING CODE THAT USES astGrfSet
TO BE MODIFIED TO INCLUDE THE NEW PARAMETER.
-
(6)
- The astRebinSeq functions now have an extra parameter that is used to
record the total number of input data values added into the output array.
This is necessary to correct a flaw in the calculation of output variances
based on the spread of input values. NOTE, THIS CHANGE WILL REQUIRE
EXISTING CODE TO BE MODIFIED TO INCLUDE THE NEW PARAMETER (CALLED "NUSED").
-
(7)
- Support has been added for the FITS-WCS “HPX” (HEALPix) projection.
-
(8)
- A new flag “AST__VARWGT” can be supplied to astRebinSeq. This causes the
input data values to be weighted using the reciprocals of the input
variances (if supplied).
-
(9)
- The Frame class has a new read-only attribute called NormUnit that returns
the normalised value of the Unit attribute for an axis. Here,
“normalisation” means cancelling redundant units, etc. So for instance, a
Unit value of “s*(m/s)” would result in a NormUnit value of “m”.
-
(10)
- A new function astShowMesh has been added to the Region class. It displays
a mesh of points covering the surface of a Region by writing out a table of
axis values to standard output.
-
(11)
- The Plot class now honours the value of the LabelUp attribute even if
numerical labels are placed around the edge of the Plot. Previously LabelUp
was only used if the labels were drawn within the interior of the plot. The
LabelUp attribute controls whether numerical labels are drawn horizontally
or parallel to the axis they describe.
-
(12)
- A bug has been fixed that could segmentation violations when setting
attribute values.
H.30 Changes Introduced in V4.6
The following describes the most significant changes which have occurred in the AST
library between versions V4.5 and V4.6:
-
(1)
- The TimeFrame class now support Local Time as a time scale. The offset from
UTC to Local Time is specified by a new TimeFrame attribute called
LTOffset.
-
(2)
- A new class called Plot3D has been added. The Plot3D class allows the
creation of 3-dimensional annotated coordinate grids.
-
(3)
- A correction for diurnal aberration is now included when converting between
AZEL and other celestial coordinate systems. The correction is based on the
value of the ObsLat Frame attribute (the geodetic latitude of the
observer).
-
(4)
- A bug has been fixed which caused the DUT1 attribute to be ignored by the
SkyFrame class when finding conversions between AZEL and other celestial
coordinate systems.
H.31 Changes Introduced in V5.0
The following describes the most significant changes which occurred in the AST library
between versions V4.6 and V5.0:
-
(1)
- The AST library is now thread-safe (assuming that the POSIX pthreads
library is available when AST is built). Many of the macros defined in the
ast.h header file have changed. It is therefore necessary to re-compile all
source code that includes ast.h.
-
(2)
- New methods astLock and astUnlock allow an AST Object to be locked for
exclusive use by a thread.
-
(3)
- The TimeFrame class now support Local Time as a time scale. The offset from
UTC to Local Time is specified by a new TimeFrame attribute called
LTOffset.
-
(4)
- The Channel class has a new attribute called Strict which controls whether
or not to report an error if unexpected data items are found within an AST
Object description read from an external data source. Note, the default
behaviour is now not to report such errors. This differs from previous
versions of AST which always reported an error is unexpected input items
were encountered.
H.32 Changes Introduced in V5.1
The following describes the most significant changes which occurred in the AST library
between versions V5.0 and V5.1:
-
(1)
- The astUnlock function now has an extra parameter that controls whether or
not an error is reported if the Object is currently locked by another
thread.
-
(2)
- The Prism class has been modified so that any class of Region can be used
to define the extrusion axes. Previously, only a Box or Interval could be
used for this purpose.
-
(3)
- The values of the AST__THREADSAFE macro (defined in ast.h) have been
changed from “yes” and “no” to “1” and “0”.
-
(4)
- Improvements have been made to the way that Prisms are simplified when
astSimplify is called. The changes mean that more types of Prism will now
simplify into a simpler class of Region.
-
(5)
- The PointList class has a new method, astPoints, that copies the axis
values from the PointList into a supplied array.
-
(6)
- The PointList class has a new (read-only) attribute, ListSize, that gives
the number of points stored in the PointList.
-
(7)
- The handling of warnings within different classes of Channel has been
rationalised. The XmlStrict attribute and astXmlWarnings function have been
removed. The same functionality is now available via the existing Strict
attribute (which has had its remit widened), a new attribute called
ReportLevel, and the new astWarnings function. This new function can be
used on any class of Channel. Teh FitsChan class retains its long standing
ability to store warnings as header cards within the FitsChan, but it also
now stores warnings in the parent Channel structure, from where they can be
retrieved using the astWarnings function.
-
(8)
- A new function called astIntercept has been added to the Frame class. This
function finds the point of intersection beteeen two geodesic curves.
-
(9)
- A bug in the type-checking of Objects passed as arguments to constructor
functions has been fixed. This bug could lead to applications crashing or
showing strange behaviour if an inappropriate class of Object was supplied
as an argument to a constructor.
-
(10)
- The astPickAxes function will now return a Region, if possible, when
applied to a Region. If this is not possible, a Frame will be returned as
before.
-
(11)
- The choice of default tick-mark for time axes has been improved, to avoid
previous issues which could result in no suitable gap being found, or
inappropriate tick marks when using formatted dates.
-
(12)
- A new function called astTestFits has been added to the FitsChan class.
This function tests a FitsChan to see if it contains a defined value for
specified FITS keyword.
-
(13)
- The AST__UNDEF<X> parameters used to flag undefined FITS keyword values
have been removed. Use the new astTestFits function instead.
-
(14)
- The astIsUndef<X> functions used to test FITS keyword values have been
removed. Use the new astTestFits function instead.
H.33 Changes Introduced in V5.2
The following describes the most significant changes which occurred in the AST library
between versions V5.1 and V5.2:
-
(1)
- A new method called astSetFitsCM has been added to the FitsChan class. It
stores a pure comment card in a FitsChan (that is, a card with no keyword
name or equals sign).
-
(2)
- A new attribute called ObsAlt has been added to the Frame class. It records
the geodetic altitude of the observer, in metres. It defaults to zero. It
is used when converting times to or from the TDB timescale, or converting
spectral positions to or from the topocentric rest frame, or converting sky
positions to or from horizon coordinates. The FitsChan class will include
its effect when creating a set of values for the OBSGEO-X/Y/Z keywords, and
will also assign a value to it when reading a set of OBSGEO-X/Y/Z keyword
values from a FITS header.
-
(3)
- The TimeMap conversions “TTTOTDB” and “TDBTOTT”, and the SpecMap
conversions “TPF2HL” and “HLF2TP”, now have an additional argument - the
observer’s geodetic altitude.
-
(4)
- The Polygon class has been modified to make it consistent with the IVOA STC
definition of a Polygon. Specifically, the inside of a polygon is now the
area to the left of each edge as the vertices are traversed in an
anti-clockwise manner, as seen from the inside of the celestial sphere.
Previously, AST used the anti-clockwise convention, but viewed from the
outside of the celestial sphere instead of the inside. Any Polygon saved
using previous versions of AST will be identified and negated automatically
when read by AST V5.2.
-
(5)
- A new class of Channel, called StcsChan, has been added that allows
conversion of suitable AST Objects to and from IVOA STC-S format.
-
(6)
- A new method called astRemoveRegions has been added to the Mapping class.
It searches a (possibly compound) Mapping (or Frame) for any instances of
the AST Region class, and either removes them, or replaces them with
UnitMaps (or equivalent Frames). It can be used to remove the masking
effects of Regions from a compound Mapping or Frame.
-
(7)
- A new method called astDownsize has been added to the Polygon class. It
produces a new Polygon that contains a subset of the vertices in the
supplied Polygon. The subset is chosen to retain the main features of the
supplied Polygion, in so far as that is possible, within specified
constraints.
-
(8)
- A new constructor called astOutline has been added to the Polygon class.
Given a 2D data array, it identifies the boundary of a region within the
array that holds pixels with specified values. It then creates a new
Polygon to describe this boundary to a specified accuracy.
-
(9)
- A new set of methods, called astMapGetElem<X> has been added to the KeyMap
class. They allow a single element of a vector valued entry to be returned.
-
(10)
- A new attribute called KeyError has been added to the KeyMap Class. It
controls whether the astMapGet... family of functions report an error if an
entry with the requested key does not exist in the KeyMap.
H.34 Changes Introduced in V5.3
The following describes the most significant changes which occurred in the AST library
between versions V5.2 and V5.3:
-
(1)
- The details of how a Frame is aligned with another Frame by the
astFindFrame and astConvert functions have been changed. The changes mean
that a Frame can now be aligned with an instance of a sub-class of Frame,
so long as the number of axes and the Domain values are consistent. For
instance, a basic 2-dimensional Frame with Domain “SKY” will now align
succesfully with a SkyFrame, conversion between the two Frames being
achieved using a UnitMap.
-
(2)
- The arrays that supply input values for astMapPut1<X> are now declared
“const”.
-
(3)
- Added method astMatchAxes to the Frame class. This method allows
corresponding axes within two Frames to be identified.
-
(4)
- The astAddFrame method can now be used to append one or more axes to all
Frames in a FrameSet.
H.35 Changes Introduced in V5.3-1
The following describes the most significant changes which have occurred in the AST
library between versions V5.3 and V5.3-1:
-
(1)
- The utility functions provided by the AST memory management layer are now
documented in an appendix.
-
(2)
- The KeyMap class now supports entries that have undefined values. A new
method called astMapPutU will store an entry with undefined value in a
keymap. Methods that retrieve values from a KeyMap (astMapGet0<X>, etc.)
ignore entries with undefined values when searching for an entry with a
given key.
-
(3)
- The KeyMap class has a new method called astMapCopy that copies entries
from one KeyMap to another KeyMap.
-
(4)
- The KeyMap class has a new boolean attribute called MapLocked. If non-zero,
an error is reported if an attempt is made to add any new entries to a
KeyMap (the value associated with any old entry may still be changed
without error). The default is zero.
-
(5)
- The Object class has a new method called astHasAttribute/AST_HASATTRIBUTE
that returns a boolean value indicating if a specified Object has a named
attribute.
-
(6)
- The SkyFrame class has two new read-only boolean attributes called
IsLatAxis and IsLonAxis that can be used to determine the nature of a
specified SkyFrame axis.
-
(7)
- A bug has been fixed in the astRebin(Seq) methods that could cause flux to
be lost from the edges of the supplied array.
-
(8)
- A bug has been fixed in the astRebin(Seq) methods that caused the first
user supplied parameter to be interpreted as the full width of the
spreading kernel, rather than the half-width.
-
(9)
- The StcsChan class now ignores case when reading STC-S phrases (except that
units strings are still case sensitive).
-
(10)
- A new Mapping method, astQuadApprox, produces a quadratic least-squares fit
to a 2D Mapping.
-
(11)
- A new Mapping method, astSkyOffsetMap, produces a Mapping from absolute
SkyFrame coordinates to offset SkyFrame coordinates.
-
(12)
- The Channel class now has an Indent attribute that controls indentation in
the text created by astWrite. The StcsIndent and XmlIndent attributes have
been removed.
-
(13)
- All classes of Channel now use the string “<bad>” to represent the floating
point value AST__BAD, rather than the literal formatted value (typically
“-1.79769313486232e+308” ).
-
(14)
- The KeyMap class now uses the string “<bad>” to represent the floating
point value AST__BAD, rather than the literal formatted value (typically
“-1.79769313486232e+308” ).
-
(15)
- The KeyMap class has a new method called astMapPutElem<X> that allows a
value to be put into a single element of a vector entry in a KeyMap. The
vector entry is extended automatically to hold the new element if required.
-
(16)
- The DSBSpecFrame class now reports an error if the local oscillator
frequency is less than the absoliute value of the intermediate frequency.
H.36 Changes Introduced in V5.3-2
The following describes the most significant changes which occurred in the AST library
between versions V5.3-1 and V5.3-2:
-
(1)
- A bug has been fixed in the FitsChan class that could cause wavelength axes
to be assigned the units “m/s” when reading WCS information from a FITS
header.
-
(2)
- The astSet function now allows literal commas to be included in string
attribute values. String attribute values that include a literal comma
should be enclosed in quotation marks.
-
(3)
- A bug in FitsChan has been fixed that caused “-SIN” projection codes within
FITS-WCS headers to be mis-interpreted, resulting in no FrameSet being read
by astRead.
-
(4)
- The KeyMap class has a new attribute called “SortBy”. It controls the order
in which keys are returned by the astMapKey function. Keys can be sorted
alphabetically or by age, or left unsorted.
-
(5)
- Access to KeyMaps holding thousands of entries is now significantly faster.
-
(6)
- KeyMaps can now hold word (i.e. short integer) values.
H.37 Changes Introduced in V5.4-0
The following describes the most significant changes which occurred in the AST library
between versions V5.3-2 and V5.4-0:
-
(1)
- the FitsChan class now has an option to support reading and writing of
FITS-WCS headers that use the -TAB algorithm described in FITS-WCS paper
III. This option is controlled by a new FitsChan attribute called TabOK.
See the documentation for TabOK for more information.
-
(2)
- A new class called “Table” has been added. A Table is a KeyMap in which
each entry represents a cell in a two-dimensional table.
-
(3)
- A new class called “FitsTable” has been added. A FitsTable is a Table that
has an associated FitsChan holding headers appropriate to a FITS binary
table.
-
(4)
- KeyMaps can now hold byte values. These are held in variables of type
"unsigned char".
-
(5)
- KeyMaps have a new attribute called KeyCase that can be set to zero to make
the handling of keys case insensitive.
-
(6)
- a memory leak associated with the use of the astMapPutElem<X> functions has
been fixed.
-
(7)
- A new method called astMapRename has been added to rename existing entry in
a KeyMap.
H.38 Changes Introduced in V5.5-0
The following describes the most significant changes which occurred in the AST library
between versions V5.4-0 and V5.5-0:
-
(1)
- The FitsChan “TabOK” attribute is now an integer value rather than a
boolean value. If TabOK is set to a non-zero positive integer before
invoking the astWrite method, its value is used as the version number for
any table that is created as a consequence of the write operation. This is
the value stored in the PVi_1a keyword in the IMAGE header, and the EXTVER
keyword in the binary table header. In previous versions of AST, the value
used for these headers could not be controlled and was fixed at 1. If TabOK
is set to a negative or zero value, the -TAB algorithm will not be
supported by either the astWrite or astRead methods.
H.39 Changes Introduced in V5.6-0
The following describes the most significant changes which occurred in the AST library
between versions V5.5-0 and V5.6-0:
-
(1)
- New functions astBBuf and astEBuf have been added to the Plot class. These
control the buffering of graphical output produced by other Plot methods.
-
(2)
- New functions astGBBuf and astGEBuf have been added to the interface
defined by file grf.h. The ast_link command has been modified so that the
-grf_v3.2 switch loads dummy versions of the new grf functions. This means
that applications that use the -grf_v3.2 switch should continue to build
without any change. However, the new public functions astBBuf and astEBuf
will report an error unless the new grf functions are implemented. If you
choose to implement them, you should modify your linking procedure to use
the -grf (or -grf_v5.6 ) switch in place of the older -grf_v3.2 switch. See
the description of the ast_link command for details of these switches.
-
(3)
- New method astGetRegionMesh returns a set of positions covering the
boundary, or volume, of a supplied Region.
H.40 ChangesIntroduced in V5.6-1
The following describes the most significant changes which occurred in the AST library
between versions V5.6-0 and V5.6-1:
-
(1)
- Tables can now have any number of parameters describing the global
properties of the Table.
-
(2)
- Frames now interpret the unit string “A” as meaning “Ampere” rather than
“Angstrom”, as specified by FITS-WCS paper I.
-
(3)
- A bug has been fixed in the astFindFrame method that allowed a template
Frame of a more specialised class to match a target frame of a less
specialised class. For example, this bug would allow a template SkyFrame to
match a target Frame. This no longer happens.
H.41 Changes Introduced in V5.7-0
The following describes the most significant changes which occurred in the AST library
between versions V5.6-1 and V5.7-0:
-
(1)
- The FitsChan class support for the IRAF-specific “TNX” projection has been
extended to include reading TNX headers that use a Chebyshev representation
for the distortion polynomial.
-
(2)
- The FitsChan class support for the IRAF-specific “ZPX” projection has been
extended to include reading ZPX headers that use simple or Chebyshev
representation for the distortion polynomial.
-
(3)
- A bug has been fixed in the FitsChan class that caused headers including
the Spitzer “-SIP” distortion code to be read incorrectly if no inverse
polynomial was specified in the header.
-
(4)
- A new attribute called PolyTan has been added to the FitsChan class. It can
be used to indicate that FITS headers that specify a TAN projection should
be interpreted according to the “distorted TAN” convention included in an
early draft of FITS-WCS paper II. Such headers are created by (for
instance) the SCAMP tool (http://www.astromatic.net/software/scamp).
-
(5)
- The PolyMap class now provides a method called astPolyTran that adds an
inverse transformation to a PolyMap by sampling the forward transformation
on a regular grid, and then fitting a polynomial function from the
resulting output values to the grid of input values.
H.42 Changes Introduced in V5.7-1
The following describes the most significant changes which occurred in the AST library
between versions V5.7-0 and V5.7-1:
-
(1)
- - All classes of Channel can now read to and write from specified text
files, without the need to provide source and sink functions when the
Channel is created. The files to use are specified by the new attributes
SourceFile and SinkFile.
-
(2)
- - The FitsChan class now ignores trailing spaces in character-valued WCS
keywords when reading a FrameSet from a FITS header.
-
(3)
- - If the FitsChan astRead method reads a FITS header that uses the -SIP
(Spitzer) distortion code within the CTYPE values, but which does not
provide an inverse polynomial correction, the FitsChan class will now use
the PolyTran method of the PolyMap class to create an estimate of the
inverse polynomial correction.
H.43 Changes Introduced in V5.7-2
The following describes the most significant changes which occurred in the AST library
between versions V5.7-1 and V5.7-2:
-
(1)
- The Object class has a new function astToString (C only), which creates an
in-memory textual serialisation of a given AST Object. A corresponding new
function called astFromString re-creates the Object from its serialisation.
-
(2)
- The PolyMap class can now use an iterative Newton-Raphson method to
evaluate the inverse the inverse transformation if no inverse
transformation is defined when the PolyMap is created.
-
(3)
- The FitsChan class has a new method astWriteFits which writes out all cards
currently in the FitsChan to the associated external data sink (specified
either by the SinkFile attribute or the sink function supplied when the
FitsChan was created), and then empties the FitsChan.
-
(4)
- The FitsChan class has a new read-only attribute called “Nkey”, which holds
the number of keywords for which values are held in a FitsChan.
-
(5)
- The FitsChan astGetFits<X> methods can now be used to returned the value of
the current card.
-
(6)
- The FitsChan class has a new read-only attribute called “CardType”, which
holds the data type of the keyword value for the current card.
-
(7)
- The FitsChan class has a new method astReadFits which forces the FitsChan
to reads cards from the associated external source and appends them to the
end of the FitsChan.
-
(8)
- - If the FitsChan astRead method reads a FITS header that uses the -SIP
(Spitzer) distortion code within the CTYPE values, but which does not
provide an inverse polynomial correction, and for which the PolyTran method
of the PolyMap class fails to create an accurate estimate of the inverse
polynomial correction, then an iterative method will be used to evaluate
the inverse correction for each point transformed.
H.44 Changes Introduced in V6.0
The following describes the most significant changes which occurred in the AST library
between versions V5.7-2 and V6.0:
-
(1)
- This version of AST is the first that can be used with the Python AST
wrapper module, starlink.Ast, available at
http://github.com/timj/starlink-pyast.
-
(2)
- When reading a FITS-WCS header, the FitsChan class now recognises the
non-standard “TPV” projection code within a CTYPE keyword value. This code
is used by SCAMP (see www.astromatic.net/software/scamp) to represent a
distorted TAN projection.
-
(3)
- The Plot class has been changed to remove visual anomalies (such as
incorrectly rotated numerical axis labels) if the graphics coordinates have
unequal scales on the X and Y axes.
- The graphics escape sequences used to produce graphical sky axis labels
can now be changed using the new function astTuneC.
H.45 Changes Introduced in V6.0-1
The following describes the most significant changes which occurred in the AST library
between versions V6.0 and V6.0-1:
-
(1)
- The FitsChan class now recognises the Spitzer “-SIP” distortion code within
FITS headers that describe non-celestial axes, as well as celestial axes.
-
(2)
- A bug has been fixed that could cause inappropriate equinox values to be
used when aligning SkyFrames if the AlignSystem attribute is set.
-
(3)
- The versioning string for AST has changed from “”
to “”.
H.46 Changes Introduced in V7.0.0
The following describes the most significant changes which occurred in the AST library
between versions V6.0-1 and V7.0.0:
-
(1)
- Fundamental positional astronomy calculations are now performed using the
IAU SOFA library where possible, and the Starlink PAL library SUN/268
otherwise (the PAL library contains a subset of the Fortran Starlink SLALIB
library re-written in C). Copies of these libraries are bundled with AST
and so do not need to be obtained or built separately, although external
copies of SOFA and PAL can be used if necessary by including the
“
–with-external_pal
” option when configuring AST.
H.47 Changes Introduced in V7.0.1
The following describes the most significant changes which occurred in the AST library
between versions V7.0.0 and V7.0.1:
-
(1)
- The levmar and wcslib code distributed within AST is now stored in the main
AST library (libast.so) rather than in separate libraries.
H.48 Changes Introduced in V7.0.2
The following describes the most significant changes which occurred in the AST library
between versions V7.0.1 and V7.0.2:
-
(1)
- The libast_pal library is no longer built if the “–with-external_pal”
option is used when AST is configured.
H.49 Changes Introduced in V7.0.3
The following describes the most significant changes which occurred in the AST library
between versions V7.0.2 and V7.0.3:
-
(1)
- A bug has been fixed which could cause an incorrect axis to be used when
accessing axis attributes within CmpFrames. This could happen if axes
within the CmpFrame have been permuted.
-
(2)
- A bug has been fixed in the SkyFrame class that could cause the two values
of the SkyRef and/or SkyRefP attributes to be reversed.
-
(3)
- Bugs have been fixed in the CmpRegion class that should allow the border
around a compound Region to be plotted more quickly, and more accurately.
Previously, component Regions nested deeply inside a CmpRegion may have
been completely or partially ignored.
-
(4)
- A bug has been fixed in the Plot3D class that caused a segmentation
violation if the MinTick attribute was set to zero.
-
(5)
- The astResampleX set of methods now includes astResampleK and astResampleUK
that handles 64 bit integer data.
H.50 Changes Introduced in V7.0.4
The following describes the most significant changes which occurred in the AST library
between versions V7.0.3 and V7.0.4:
-
(1)
- The previously private grf3d.h header file is now installed into
prefix/include.
H.51 Changes Introduced in V7.0.5
The following describes the most significant changes which occurred in the AST library
between versions V7.0.4 and V7.0.5:
-
(1)
- The FitsChan class can now read FITS headers that use the SAO convention
for representing distorted TAN projections, based on the use of “COi_m”
keywords to hold the coefficients of the distortion polynomial.
H.52 Changes Introduced in V7.0.6
The following describes the most significant changes which occurred in the AST library
between versions V7.0.5 and V7.0.6:
-
(1)
- A bug has been fixed in astRebinSeq<X> which could result in incorrect
normalisation of the final binned data and variance values.
-
(2)
- When reading a FrameSet from a FITS-DSS header, the keywords CNPIX1 and
CNPIX2 now default to zero if absent. Previously an error was reported.
H.53 Changes Introduced in V7.1.0
The following describes the most significant changes which occurred in the AST library
between versions V7.0.6 and V7.1.0:
-
(1)
- IMPORTANT! The default behaviour of astRebinSeq is now NOT to conserve
flux. To conserve flux, the AST__CONSERVEFLUX flag should be supplied when
calling astRebinSeq<X>. Without this flag, each output value is a weighted
mean of the neighbouring input values.
-
(2)
- A new flag AST__NONORM can be used with astRebinSeq<X> to indicate that
normalisation of the output arrays is not required. In this case no weights
array need be supplied.
-
(3)
- A bug has been fixed in astAddFrame method that could result in the
incorrect inversion of Mappings within the FrameSet when the AST__ALLFRAMES
flag is supplied for the "iframe" parameter.
-
(4)
- The astRate method has been re-written to make it faster and more reliable.
H.54 Changes Introduced in V7.1.1
The following describes the most significant changes which occurred in the AST library
between versions V7.1.0 and V7.1.1:
-
(1)
- When a FitsChan is used to write an “offset” SkyFrame (see attribute
SkyRefIs) to a FITS-WCS encoded header, two alternate axis descriptions are
now created - one for the offset coordinates and one for the absolute
coordinates. If such a header is subsequently read back into AST, the
original offset SkyFrame is recreated.
-
(2)
- A bug has been fixed in FitsChan that caused inappropriate CTYPE values to
be generated when writing a FrameSet to FITS-WCS headers if the current
Frame describes generalised spherical coordinates (i.e. a SkyFrame with
System=Unknown).
H.55 Changes Introduced in V7.2.0
The following describes the most significant changes which occurred in the AST library
between versions V7.1.1 and V7.2.0:
-
(1)
- A new method call astMapDefined has been added to the KeyMap class. It
checks if a gtiven key name has a defined value in a given KeyMap.
H.56 Changes Introduced in V7.3.0
The following describes the most significant changes which occurred in the AST library
between versions V7.2.0 and V7.3.0:
-
(1)
- The interface for the astRebinSeq<X> family of functions has been changed
in order to allow a greater number of pixels to be pasted into the output
array. The "nused" parameter is now a pointer to a "int64_t" variable,
instead of an "int". APPLICATION CODE SHOULD BE CHANGED ACCORDINGLY TO
AVOID SEGMENTATION FAULTS AND OTHER ERRATIC BEHAVIOUR.
-
(2)
- Added a new facility to the FrameSet class to allow each Frame to be
associated with multiple Mappings, any one of which can be used to connect
the Frame to the other Frames in the FrameSet. The choice of which Mapping
to use is controlled by the new “Variant” attribute of the FrameSet class.
-
(3)
- Mappings (but not Frames) that have a value set for their Ident attribute
are now left unchanged by the c astSimplify function. f AST_SIMPLIFY
routine.
H.57 Changes Introduced in V7.3.1
The following describes the most significant changes which occurred in the AST library
between versions V7.3.0 and V7.3.1:
-
(1)
- Fix a bug that could cauise a segmentation violation when reading certain
FITS headers that use a TNX projection.
H.58 Changes Introduced in V7.3.2
The following describes the most significant changes which occurred in the AST library
between versions V7.3.1 and V7.3.2:
-
(1)
- Fix support for reading FITS header that use a GLS projection. Previously,
an incorrect transformation was used for such projections if any CRVAL or
CROTA value was non-zero.
-
(2)
- The KeyMap class has new sorting options “KeyAgeUp” and “KeyAgeDown” that
retain the position of an existing entry if its value is changed. See the
SortBy attribute.
-
(3)
- A bug has been fixed in the FitsChan class that caused CDELT keywords for
sky axes to be treated as radians rather than degrees when reading a FITS
header, if the corresponding CTYPE values included no projection code.
H.59 Changes Introduced in V7.3.3
The following describes the most significant changes which occurred in the AST library
between versions V7.3.2 and V7.3.3:
-
(1)
- The FitsChan class has new attributes CardName and CardComm, which hold the
keyword name and comment of the current card.
-
(2)
- When using the FitsChan class to read FITS-WCS headers that include
polynomial distortion in the SIP format, any inverse transformation
specified in the header is now ignored and a new inverse is created to
replace it based on the supplied forward transformation. Previously, an
inverse was created only if the header did not include an inverse. The
accuracy of the inverse transformation has also been improved, although it
may now be slower to evaluate in some circumstances.
H.60 Changes Introduced in V7.3.4
The following describes the most significant changes which occurred in the AST library
between versions V7.3.3 and V7.3.4:
-
(1)
- By default, the simplification of Polygons no longer checks that the edges
are not bent by the simplification. A new attribute, SimpVertices, can be
set to zero in order to re-instate this check.
-
(2)
- The Polygon class has a new mathod, astConvex, that returns a Polygon
representing the shortest polygon (i.e. convex hull) enclosing a specified
set of pixel values within a supplied array.
H.61 Changes Introduced in V8.0.0
The following describes the most significant changes which occurred in the AST library
between versions V7.3.4 and V8.0.0:
-
(1)
- AST is now distributed under the Lesser GPL licence.
-
(2)
- The PolyMap class now uses files copied from the C/C++ Minpack package (see
http://devernay.free.fr/hacks/cminpack/index.html) to perform least squares
fitting of N-dimensional polynomials.
-
(3)
- Use of the IAU SOFA library has been replaced by ERFA library, which is a
re-badged copy of SOFA distributed under a less restrictive license. A copy
of ERFA is included within AST.
H.62 Changes Introduced in V8.0.1
The following describes the most significant changes which occurred in the AST library
between versions V8.0.0 and V8.0.1:
-
(1)
- The Base and Current attributes of a FrameSet may now be set using the
Domain name or the index of the required Frame.
-
(2)
- The order of WCS axes within new FITS-WCS headers created by astWrite can
now be controlled using a new attribute called FitsAxisOrder.
-
(3)
- Supported added for FITS XPH (polar HEALPIX) projection.
-
(4)
- The macro used to invoke the astAppendString utility function has changed
to allow printf-style converstions to be included in the supplied text. Any
code that uses this macro must be re-compiled.
-
(5)
- The astRebin and astRebinSeq family of functions now include support for
arrays with char (byte) and unsigned char (unsigned byte) data types.
H.63 Changes Introduced in V8.0.2
The following describes the most significant changes which occurred in the AST library
between versions V8.0.1 and V8.0.2:
-
(1)
- For security reasons, the change introduced to astAppendString in V8.0.1
has been moved to a new function called astAppendStringf, and
astAppendString itself has been reverted to its V8.0.0 version. Any
software that has been built against V8.0.1 will need to be re-compiled and
re-linked against V8.0.2.
H.64 Changes Introduced in V8.0.3
The following describes the most significant changes which occurred in the AST library
between versions V8.0.2 and V8.0.3:
-
(1)
- Methods astRebin, astRebinSeq, astResample and astTranGrid now report an
error if an array is specified that has more pixels than can be counted by
a 32 bit integer.
-
(2)
- The hypertext documentation is now generated using Tex4HT rather than
latex2html. The format of the hypertext docs has changed significantly.
-
(3)
- Another bug fix associated with reading CAR projections from FITS-WCS
headers.
-
(4)
- Constructor options strings of the form “
..., "%s", text );
” can now be
supplied. This avoids a security issue associated with the alternative form
“..., text );
”.
H.65 Changes Introduced in V8.0.4
The following describes the most significant changes which occurred in the AST library
between versions V8.0.3 and V8.0.4:
-
(1)
- The behaviour of the astAddFrame method has been changed slightly.
Previously, astAddFrame modified the FrameSet by storing references to the
supplied Mapping and Frame objects within the FrameSet. This meant that any
subsequent changes to the current Frame of the modified FrameSet also
affected the supplied Frame object. Now, deep copies of the Mapping and
Frame objects (rather than references) are stored within the modified
FrameSet. This means that subsequent changes to the modified FrameSet will
now have no effect on the supplied Frame.
-
(2)
- The choice of default tick-mark gaps for time axes has been improved, to
avoid a previous issue which could result in no suitable gap being found.
- A new method called astRegionOutline has been added to the Plot class. It
draws the outline of a supplied AST Region.
-
(3)
- A bug has been fixed that could cause astSimplfy to enter an infinite loop.
-
(4)
- Some improvements have been made to the Mapping simplification process that
allow more Mappings to be simplified.
-
(5)
- The Frame class has a new read-only attribute called InternalUnit, which
gives the units used for the unformatted (i.e. floating-point) axis values
used internally by application code. For most Frames, the InternalUnit
value is just the same as the Unit value (i.e. formatted and unformatted
axis values use the same units). However, the SkyFrame class always returns
“
rad
” for InternalUnit, regardless of the value of Unit, indicating that
floating-point SkyFrame axis values are always in units of radians.
-
(6)
- The LutMap class has a new attribute called LutEpsilon, which specifies the
relative error of the values in the table. It is used to decide if the
LutMap can be simplified to a straight line.
H.66 Changes Introduced in V8.0.5
The following describes the most significant changes which occurred in the AST library
between versions V8.0.4 and V8.0.5:
-
(1)
- The SkyFrame class has a new attribute called SkyTol, which specifies the
smallest significant distance within the SkyFrame. It is used to decide if
the Mapping between two SkyFrames can be considered a unit transformation.
The default value is 0.001 arc-seconds.
-
(2)
- A bug has been fixed in the FitsChan class that prevented illegal
characters within FITS keyword names (i.e. characters not allowed by the
FITS standard) being detected. This bug could under some circumstances
cause a subsequent segmentation violation to occur.
-
(3)
- A “BadKeyName” warning is now issued by the FitsChan class if a FITS
keyword name is encountered that contains any illegal characters. See
attribute “Warnings” and function “astWarnings”.
H.67 Changes Introduced in V8.1.0
The following describes the most significant changes which occurred in the AST library
between versions V8.0.5 and V8.1.0:
-
(1)
- The configure script has a new option “–without-fortran” that allows AST to
be built in situations where no Fortran compiler is available. The
resulting library has no Fortran interface and so cannot be used within
Fortran applications. Also, the link scripts do not attempt to include the
fortran runtime libraries.
H.68 Changes Introduced in V8.2
The following describes the most significant changes which occurred in the AST library
between versions V8.1.0 and V8.2.0:
-
(1)
- A new class of Mapping called UnitNormMap has been added that converts a
vector to a unit vector relative to a specified centre, plus length. A
UnitNormMap has N inputs and N+1 outputs.The lower N output coordinates
represent a unit vector parallel to the supplied input vector, and the
(N+1)’th output coordinate is the length of the input vector.
-
(2)
- The restriction that Mappings are immutable has been extended to all
Mapping classes. This means that attributes representing parameters of a
Mapping’s forward or inverse transformation cannot be changed after the
Mapping has been created. In order to minimise the risk to existing
software, this rule does not apply to Mappings that have not yet been
included in other objects such as CmpMaps or FrameSets, or which have not
yet been cloned. In other words, an error is reported if an attempt is made
to change the nature of a Mapping’s transformation, but only if the
reference count of the Mapping is greater than one. The Mapping classes
affected include: GrismMap, LutMap, PcdMap, SphMap, WcsMap and ZoomMap.
H.69 Changes Introduced in V8.3
The following describes the most significant changes which occurred in the AST library
between versions V8.2.0 and V8.3.0:
-
(1)
- A new method called astAxNorm has been added to the Frame class that
normalises an array of axis values. When used with SkyFrames, it allows
longitude values to be normalised into the shortest range.
-
(2)
- A bug has been fixed in the astGetRegionBounds method that could cause the
wrong bounds to be returned for regions spanning a longitude = zero
singularity.
H.70 Changes Introduced in V8.4
The following describes the most significant changes which occurred in the AST library
between versions V8.3.0 and V8.4.0:
-
(1)
- The PAL library files included in the AST distribution have been updated to
PAL version 0.9.7.
-
(2)
- Multiple identical NormMaps in series will now be simplified to a single
NormMap.
-
(3)
- A NormMap that encapsulates a basic Frame will now be simplified to a
UnitMap.
-
(4)
- The astTimeAdd method of the TimeMap class now include an extra argument
that gives the number of values supplied in the arguments array. Note, any
existing code that uses this method will need to be changed.
-
(5)
- The astSlaAdd method of the SlaMap class now include an extra argument that
gives the number of values supplied in the arguments array. Note, any
existing code that uses this method will need to be changed.
-
(6)
- The astSpecAdd method of the SpecMap class now include an extra argument
that gives the number of values supplied in the arguments array. Note, any
existing code that uses this method will need to be changed.
-
(7)
- Multiple identical NormMaps in series will now be simplified to a single
NormMap.
-
(8)
- A NormMap that encapsulates a basic Frame will now be simplified to a
UnitMap.
-
(9)
- If the astMapRegion method is used to map a Region into a new Frame that
has fewer axes than the original Region, and if the inverse transformation
of the supplied Mapping does not specify a value for the missing axes, then
those axes are removed entirely from the Region. Previously they were
retained, but automatically supplied with bad values. This affects the
number of mesh points per axes for such Regions, and so affects the
accuracy of overlap determination.
H.71 Changes Introduced in V8.5
The following describes the most significant changes which occurred in the AST library
between versions V8.4.0 and V8.5.1:
-
(1)
- - A new class of Mapping called ChebyMap has been added. This is a Mapping
that implements Chebyshev polynomial transformations.
-
(2)
- A bug has been fixed in the PolyMap class that caused incorrect values to
be returned for the TranForward and TranInverse attributes if the PolyMap
has been inverted.
-
(3)
- The KeyMap class has a new method called astMapGetC which returns a named
entry as a single string. If the entry is a vector the returned string is a
comma-separated list of its elements, enclosed in parentheses.
-
(4)
- If the function that delivers error messages to the user (astPutErr) is
re-implemented, the new version can now be registered at run-time using the
new astSetPutErr function. Previously, the new version needed to be linked
into the application at build time.
-
(5)
- The Frame class now has a new attribute caled DTAI, which can be used to
specify the number of leap seconds at the moment represented by the Frame’s
Epoch attribute. By default, the internal look-up table of leap seconds
contained within AST is used. The DTAI attribute allows old versions of
AST, which may not include the most recent leap seconds, to be used with
new data.
-
(6)
- The TimeMap class has been changed so that some conversions now require a
“Dtai” value (i.e. the number of leap seconds) to be supplied by the
caller. If AST__BAD is supplied for “Dtai”, the internal look-up table of
leap seconds contained withn AST will be used. The conversions affected are
those between TAI and UTC, and those between TT and TDB.
H.72 Changes Introduced in V8.6.2
The following describes the most significant changes which occurred in the AST library
between versions V8.5.1 and V8.6.2:
-
(1)
- The astRebinSeq<X> functions accepts a new flag, AST__PARWGT, which allows
the initial weight to be given for the data being pasted into the output
arrays (the initial weight to use should be include in the "params" array).
This initial weight defaults to 1.0 if the AST__PARWGT flag is not given.
-
(2)
- The behaviour of the astLinearApprox method of the Mapping class has been
changed in cases where the Mapping being approximated generates bad
(AST__BAD) values for one or more of its outputs. Previously, any such
Mapping would be deemed non-linear and no fit would be returned. Now, a fit
is returned, provided the other outputs of the Mapping are linear, but the
fit contains AST__BAD values for the coefficients describing the bad
Mapping output.
-
(3)
- The astWrite method of the FitsChan class can now create FITS-WCS headers
that include keyords describing focal plane distortion using the
conventions of the Spitzer SIP scheme. This is however only possible if the
SipOK attribute of the FitsChan is set to a non-zero value (which is the
default), and the FrameSet being written out contains an appropriate
PolyMap that conforms to the requirements of the SIP convention.
-
(4)
- A new function call astCreatedAt is now available that returns the function
name, file path and line number at which an AST object was first created.
Note, there is no Fortran equivalent to this new C function.
-
(5)
- The number of digits used to format floating point values has been
increased in order to avoid loss of precision when converting from binary
to string and back to binary. This could cause very small changes in
numerical values returned by AST functions.
-
(6)
- If a FrameSet is supplied as the “map” argument to astAddFrame, it now
extracts and stores the base->current Mapping from the supplied FrameSet.
Previously, the entire FrameSet was stored as the Mapping.
H.73 Changes Introduced in V8.6.3
The following describes the most significant changes which occurred in the AST library
between versions V8.6.2 and V8.6.3:
-
(1)
- Small memory leaks in Region and FitsChan classes have been fixed.
-
(2)
- A bug that could cause an internal buffer overrun within the FitsChan class
when writing out a FITS-WCS spectral axis with the “-LOG” algorithm has
been fixed.
-
(3)
- The test that a Mapping conforms to the requirements of the SIP FITS
distortion scheme has been improved.
-
(4)
- The astRebinSeq method of the Mapping class can now use a different weight
when pasting each separate input data array into the output mosaic.
H.74 Changes Introduced in V8.7.0
The following describes the most significant changes which occurred in the AST library
between versions V8.6.3 and V8.7.0:
-
(1)
- The Region class has a new method called astGetRegionDisc, which returns
the centre and radius of a disc that just encloses a 2-dimensional Region.
-
(2)
- A new subclass of Region called “Moc” has been added. A Moc describes an
arbitrary region of the sky in the form of a set of HEALPix cells.
-
(3)
- The Bounded attribute defined by the Region class is now always non-zero
for Regions defined within a SkyFrame, regardless of whether the Region has
been negated. Previously, it was non-zero only if the Region had not been
negated. Note, this change only affects Regions defined within SkyFrames.
H.75 Changes Introduced in V8.7.1
The following describes the most significant changes which occurred in the AST library
between versions V8.7.0 and V8.7.1:
-
(1)
- The Moc class now supports version 1.1 of the the MOC recommendation. This
includes new support for string and JSON encoded MOCs. See methods
astGetMocString and astAddMocString in the Moc class, and also the new
MocChan class.
-
(2)
- The FitsChan class will now read FITS-WCS headers that have alternate axis
descriptions but no primary axis descriptions.
H.76 Changes Introduced in V8.7.2
The following describes the most significant changes which occurred in the AST library
between versions V8.7.1 and V8.7.2:
-
(1)
- By default, the AST header file “ast.h” is now installed into both
STARLINK_DIR/include
and STARLINK_DIR/include/star
. The new configure
option “–without-topinclude
” can be used to prevent the header file being
installed into STARLINK_DIR/include
.
H.77 Changes Introduced in V9.0.0
The following describes the most significant changes which occurred in the AST library
between versions V8.7.2 and V9.0.0:
-
(1)
- Functions such as astResample and astMask that handle grids of data values
now have alternative interfaces that can handle grids that contain more
pixels than can be represented in a 4-byte integer. This is achieved by
using 8-byte integer arguments in place of 4-byte arguments. The names of
these “8-byte” interfaces are the same as the 4-byte interfaces but have
the digit “8” appended to the function name (before any trailing data type
code). These new interfaces are documented in an extra paragraph entitled
Handling of Huge Pixel Arrays attached to the reference documentation for
each such function.
Note, all C or C++ code that uses AST should be recompiled to pick up changes made to
the header file ast.h. This should be done even if you do not intend to use the new
8-byte interfaces.
H.78 Changes Introduced in V9.0.2
The following describes the most significant changes which occurred in the AST library
between versions V9.0.0 and V9.0.2:
-
(1)
- The AST sharable libraries now use a non-zero version number.
-
(2)
- The FitsChan class has a new attribute called ForceTab, which is used in
conjunction with the TabOK attribute to force the use of the “-TAB”
algorithm when writing a FrameSet out using the FITS-WCS encoding.
H.79 Changes Introduced in V9.1.0
The following describes the most significant changes which occurred in the AST library
between versions V9.0.2 and V9.1.0.
-
(1)
- The AST source directory has been reorganised to put most of the AST source
files into a subdirectory named “src”.
-
(2)
- A bug has been fixed in the TimeFrame class that caused the time returned
by astCurrentTime to be wrong by 37 seconds.
-
(3)
- The Region class has a new convenience method (astPointInRegion) to test a
if a single point is inside a Region.
H.80 Changes Introduced in V9.1.2
The following describes the most significant changes which occurred in the AST library
between versions V9.1.0 and V9.1.2:
-
(1)
- A bug in the way in which the FitsChan class reads FITS-WCS headers that
have more WCS axes than pixel axes has been fixed (i.e. axes for which
there is no CRPIX value). Previously, the missing pixel axes were assigned
a constant value 1.0. However, the default value for CRPIX specified by
FITS-WCS Paper I is 0.0, not 1.0. So now the missing pixel axes are
assigned the value 0.0.
H.81 Changes Introduced in V9.1.3
The following describes the most significant changes which occurred in the AST library
between versions V9.1.2 and V9.1.3:
-
(1)
- The KeyMap class has a new method called astMapCopyEntry that can be used
to copy a single entry from one KeyMap to another.
-
(2)
- The astSimplify method now prefers ShiftMaps over equivalent WinMaps.
-
(3)
- The astSimplify method will now merge WinMaps with neighbouring diagonal
MatrixMaps.
H.82 Changes Introduced in V9.2.0
The following describes the most significant changes which occurred in the AST library
between versions V9.1.3 and V9.2.0:
-
(1)
- - A new subclass of Channel called YamlChan has been added. It allows AST
objects to be read and written using YAML. Currently, the ASDF format
developed by STSci (https://asdf-standard.readthedocs.io) is the only
supported encoding.
H.83 Changes Introduced in V9.2.4
The following describes the most significant changes which occurred in the AST library
between versions V9.2.0 and V9.2.4:
-
(1)
- A bug has been fixed that could prevent the astWrite method of the FitsChan
class producing FITS-WCS headers describing alternate axes for some of the
Frames in the supplied FrameSet. Consequently, the headers produced by
astWrite may now include alternate axis descriptions that were not present
previously. These can be supressed using the new AltAxes attribute.
-
(2)
- The FitsChan class has a new attribute, AltAxes, which controls the
creation of FITS-WCS alternate axis descriptions by the astWrite method.
-
(3)
- - The KeyMap class now supports 64 bit integer (int64_t) entries,
represented by the new data type code “K”.
-
(4)
- Two simplification bugs introduced at V9.2.0 have been fixed.
-
(5)
- The YamlChan class now supports AST “native” encoding.
H.84 Changes Introduced in V9.2.5
The following describes the most significant changes which occurred in the AST library
between versions V9.2.4 and V9.2.5:
-
(1)
- A new method called astNormPoints has been added to the Frame class. This
is similar to the existing astNorm method in that it can be used to
normalise axis values, but can be used on a vector of points rather than
just a single point. In addition, it has an option to choose a
normalisation that avoids discontinuities in the Frame’s coordinate system.
The most common usage will be to modify vectors of sky position in such a
way as to avoid sudden jumps of 360 degrees in longitude within groups of
points that span the longitude origin.
- The mesh of points returned by astGetRegionMesh and astShowMesh are now
normalised to avoid discontinuities in celestial longitude. This uses the
new astNormPoints methid described in the previous item.
-
(2)
- A bug has been fixed in the KeyMap class that caused astMapGet1<X>
functions to return a vector length of 1 for KeyMap entries with an
undefined value. A vector length of zero is now returned in such cases.
-
(3)
- The way in which the astRebinSeq functions use the “wlim” argument has been
modified in order to improve the performance when the input variances
include aberrant ultra-low values. The change should result in fewer output
pixels being set bad in such cases. This change only affects cases where
the AST__GENVAR flag is not set.
-
(4)
- An option “–with-external-cminpack” had been added to the configure script.
It omits the internal cminpack routines from the built library, and instead
links with an external cminpack library.
H.85 Changes Introduced in V9.2.6
The following describes the most significant changes which occurred in the AST library
between versions V9.2.5 and V9.2.6:
-
(1)
- A bug has been fixed in the FitsChan class that caused an error to be
reported when reading a legal FITS WCS header that uses the “NCP”
projection code. The error message related to a missing alternate axis
description keyword.
H.86 Changes Introduced in V9.2.7
The following describes the most significant changes which occurred in the AST library
between versions V9.2.6 and V9.2.7:
-
(1)
- The FitsChan class has a new attribute called FitsRounding, which controls
rounding applied when floating point values are formatted as FITS keyword
values. Note, this changes the default rounding behaviour. Previously,
sequences of four or more 9’s or 0’s were always rounded. Now, such
sequences are only rounded if they extend beyond the tenth significant
digit (the default value for FitsRounding being 10). To restore the
original behaviour, set FitsRounding to 1.
H.87 Changes Introduced in V9.2.8
The following describes the most significant changes which have occurred in the AST
library between versions V9.2.7 and V9.2.8 (the current version):
-
(1)
- The Fortran interface has been changed to fix a bug caused by a change in
the way that gfortran passes character arguments. As of gfortran V8 the
length of each character argument passed to a subroutine is stored in a
size_t value rather than an int value. AST now tests the version of
gfortran at configure-time, and uses int or size_t within the Fortran API
as appropriate. Prior to this change int was always used, which could cause
undefined behaviour and segmentation faults when calling AST routines under
gfortran v8 and later.
-
(2)
- A bug has been fixed in astRebinSeq that could cause NaN values to appear
in the output array in cases where the overlap between two input arrays is
very small. The fix corrects the way in which the mean weight per input
pixel is calculated. It may cause some general minor changes to the
decision about which output pixels pass the “wlim” criterion.
Programs which are statically linked will need to be re-linked in order to take
advantage of these new facilities.
Copyright (C) 2021 East Asian Observatory
- ←Prev
- AST
A Library for Handling
World
Coordinate Systems
in Astronomy -
- TOC ↑