AST Library ----------- A new release (V8.6.3) of the Starlink AST (astrometry) library is now available. AST provides a comprehensive range of facilities for attaching world coordinate systems (such as RA/Dec, frequency, etc) to astronomical data, for retrieving and interpreting that information and for generating graphical output based on it. The library should be of interest to anyone writing astronomical software which needs to manipulate coordinate system data, especially celestial coordinate systems. AST is portable and environment-independent. Main Changes in this Version ---------------------------- - Small memory leaks in Region and FitsChan classes have been fixed. - 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. - The test that a Mapping conforms to the requirements of the SIP FITS distortion scheme has been improved. - The astRebinSeq method of the Mapping class can now use a different weight when pasting each separate input data array into the output mosaic. Main Changes in V8.6.2 ---------------------- - 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. - 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. - The astRebinSeq 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. Main Changes in V8.6.1 ---------------------- - 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. - 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. - 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. Main Changes in V8.5.1 ---------------------- - A new class of Mapping called ChebyMap has been added. This is a Mapping that implements Chebyshev polynomial transformations. - 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. - 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. - The KeyMap class has a new method called astMapGetC (AST_MAPGETC) 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. - 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. - 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. Main Changes in V8.3.0 ---------------------- - The PAL library files included in the AST distribution have been updated to PAL version 0.9.7. - Multiple identical NormMaps in series will now be simplified to a single NormMap. - A NormMap that encapsulates a basic Frame will now be simplified to a UnitMap. - The astTimeAdd (AST_TIMEADD) 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. - The astSlaAdd (AST_SLAADD) 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. - The astSpecAdd (AST_SPECADD) 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. - If the astMapRegion (AST_MAPREGION) 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 supplied with bad values. This affects the number of mesh points per axes for such Regions, and so affects the accuracy of overlap determination. Main Changes in V8.3.0 ---------------------- - 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. - A bug has been fixed in the Fortran include file AST_PAR that caused constants related to PI to be defined as single rather than double precision. - 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. Main Changes in V8.2.0 ---------------------- - 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. - 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. Main Changes in V8.1.0 ---------------------- - 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. Main Changes in V8.0.7 ---------------------- - A bug in FitsChan has been fixed which could cause a small shift in spectral axis value when writing out a spectral cube to FITS-WCS headers, This shift occurred only if the celestial axes in the cube were not FK5 (RA,Dec). - Avoid some more compiler warnings. - A "BadKeyValue" warning is now issued by the FitsChan class if an illegal FITS keyword value is encountered. See attribute "Warnings" and function "astWarnings". Main Changes in V8.0.6 ---------------------- - Fix bug in FitsChan that caused SIP headers to be treated as linear when creating a FrameSet from the headers. - Fix bug in LutMap that incorrectly allowed an inverse lutmap to be used even if the original LutMap was not monotonic. - Allow attributes to be set for each plane of a Plot3D. - Avoid some compiler warnings. Main Changes in V8.0.5 ---------------------- - 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. - 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. - 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". Main Changes in V8.0.4 ---------------------- - 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, astAddFrame stores deep copies of the Mapping and Frame objects (rather than references) within the modified FrameSet. This means that subsequent changes to the modified FrameSet will now have no effect on the supplied Frame. - 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. - A new method called astRegionOutline has been added to the Plot class. It draws the outline of a supplied AST Region. - A bug has been fixed that could cause astSimplfy to enter an infinite loop. - Some improvements have been made to the Mapping simplification process that allow more Mappings to be simplified. - 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. - 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. Main Changes in V8.0.3 ---------------------- - 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. - The hypertext documentation is now generated using Tex4HT rather than latex2html. The format of the hypertext docs has changed significantly. - Another bug fix associated with reading CAR projections from FITS-WCS headers. - Constructor options strings of the form "..., "%s", text );" can now be supplied. This avoids a security issue associated with the alternative form "..., text );". Main Changes in V8.0.2 ---------------------- - 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. Main Changes in V8.0.1 ---------------------- - 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. - The astRebin and astRebinSeq family of functions now include support for arrays with char (byte) and unsigned char (unsigned byte) data types. - The Base and Current attributes of a FrameSet may now be set using the Domain name or the index of the required Frame. - The FITS XPH projection is now supported. - The order of WCS axes within new FITS-WCS headers created by astWrite can now be controlled using a new attribute called FitsAxisOrder. Main Changes in V8.0.0 ---------------------- - AST is now distributed under the Lesser GPL licence. - Least squares fitting of N-dimensional polynomials is now done using files copied from the C/C++ Minpack package (see http://devernay.free.fr/hacks/cminpack/index.html). - 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. Main Changes in V7.3.4 ---------------------- - 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. - 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. Main Changes in V7.3.3 ---------------------- - The FitsChan class has new attributes CardName and CardComm, which hold the keyword name and comment of the current card. - When reading 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. - A bug has been fixed that could over-write the FitsChan CarLin attribute with a non-zero value if the header contains a spectral axis. - The default options for each newly created FitsChan can now be specified via the environment variable FITSCHAN_OPTIONS. Main Changes in V7.3.2 ---------------------- - Fix support for reading GLS projections from FITS headers. - 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. - A bug has been fixed in FitsChan 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. Main Changes in V7.3.1 ---------------------- - Fix bug that could cause a segmenatation fault when reading a FITS TNX header. Main Changes in V7.3.0 ---------------------- - IMPORTANT! The interface for the astRebinSeq (AST_REBINSEQ) family of functions has been changed in order to allow a greater number of pixels to be pasted into the output array. In C, the "nused" parameter is now a pointer to a "int64_t" variable, instead of a simple "int". In Fortran, the NUSED argument for AST_REBINSEQ is now an INTEGER*8. APPLICATION CODE SHOULD BE CHANGED ACCORDINGLY TO AVOID SEGMENTATION FAULTS AND OTHER ERRATIC BEHAVIOUR. - 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. - Mappings (but not Frames) that have a value set for their Ident attribute are now left unchanged by the astSimplify (AST_SIMPLIFY) function. Main Changes in V7.2.0 ---------------------- - 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. Main Changes in V7.1.1 ---------------------- - 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). - 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. Main Changes in V7.1.0 ---------------------- - 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. Without this flag, each output value is a weighted mean of the neighbouring input values. - A new flag AST__NONORM can be used with astRebinSeq to indicate that normalisation of the output arrays is not required. In this case no weights array need be supplied. - A bug has been fixed in astAddFrame (AST_ADDFRAME) method that could result in the incorrect inversion of Mappings within the FrameSet when the AST__ALLFRAMES flag is supplied for the "iframe" parameter. - The astRate method has been re-written to make it faster and more reliable. Main Changes in V7.0.6 ---------------------- - A bug has been fixed in astRebinSeq which could result in incorrect normalisation of the final binned data and variance values. - 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. Main Changes in V7.0.5 ---------------------- - The FitsChan class can now read FITS headers that use the SAO convention for representing distorted TAN projections, based on the use of "COi_j" keywords to hold the coefficients of the distortion polynomial. Main Changes in V7.0.4 ---------------------- - The previously private grf3d.h header file is now installed into prefix/include. Main Changes in V7.0.3 ---------------------- - 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. - 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. - 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. - A bug has been fixed in the Plot3D class that caused a segmentation violation if the MinTick attribute was set to zero. - The astResampleX set of methods now includes astResampleK and astResampleUK that handles 64 bit integer data. Main Changes in V7.0.2 ---------------------- - The libast_pal library is no longer built if the "--with-external_pal" option is used when AST is configured. Main Changes in V7.0.1 ---------------------- - The levmar and wcslib code distributed within AST is now stored in the main AST library (libast.so) rather than in separate libraries. Main Changes in V7.0.0 ---------------------- - Fundamental positional astronomy calculations are now performed using the IAU SOFA library where possible, and the Starlink PAL library 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. Main Changes in V6.0-1 ----------------------- - The Spitzer "-SIP" distortion code is now recognised within FITS headers that describe non-celestial axes, as well as celestial axes. - A bug has been fixed that could cause inappropriate equinox values to be used when aligning SkyFrames if the AlignSystem attribute is set. - The format of the version string for AST has changed from ".-" to "..". Main Changes in V6.0 ----------------------- - 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. - 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. - 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 (AST_TUNEC). Main Changes in V5.7-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. - The FitsChan class has a new method astWriteFits (AST_WRITEFITS) 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. - The FitsChan class has a new method astReadFits (AST_READFITS) which forces the FitsChan to reads cards from the associated external source and appends them to the end of the FitsChan. - 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. - The FitsChan class has a new read-only attribute called "CardType", which holds the data type of the keyword value for the current card. - The FitsChan astGetFits (AST_GETFITS) methods can now be used to returned the value of the current card. - 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. - 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. Main Changes in V5.7-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. - The FitsChan class now ignores trailing spaces in character-valued WCS keywords when reading a FrameSet from a FITS header. - 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. Main Changes in V5.7-0 ----------------------- - 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. - 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. - 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. - 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). - The PolyMap class now provides a method called astPolyTran (AST_POLYTRAN) 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. Main Changes in V5.6-1 ----------------------- - Tables can now have any number of parameters describing the global properties of the Table. - Frames now interpret the unit string "A" as meaning "Ampere" rather than "Angstrom", as specified by FITS-WCS paper I. - A bug has been fixed in the astFindFrame (AST_FINDFRAME) 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. Main Changes in V5.6-0 ----------------------- - New functions astBBuf (AST_BBUF) and astEBuf (AST_EBUF) have been added to the Plot class. These control the buffering of graphical output produced by other Plot methods. - 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 described in the previous item 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. - New method astGetRegionMesh (AST_GETREGIONMESH) returns a set of positions covering the boundary, or volume, of a supplied Region. Main Changes in V5.5-0 ----------------------- - The FitsChan "TabOK" attribute is now an integer value rather than a boolean value. As in previous versions, it is used to indicate whether the "-TAB" algorithm should be supported by the astRead (AST_READ) and astWrite (AST_WRITE) methods, but in addition it is now also used to give the version number to assign to any table gebnerated as a consequence of calling astWrite (AST_WRITE). A negative or zero value (the default) indicates that support for the -TAB algorithm is not available, where as a positive non-zero value indicates that support is available and also gives the table version number to use when creating subsequent -TAB headers. Main Changes in V5.4-0 ----------------------- - 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. - 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. - 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. - KeyMaps can now hold byte (i.e. "unsigned char" or BYTE) values. - A new method called astMapRename (AST_MAPRENAME) has been added to rename an existing entry in a KeyMap. - KeyMaps have a new attribute called KeyCase that can be set to zero to make the handling of keys case insensitive. Main Changes in V5.3-2 ----------------------- - 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. - The astSet function (AST_SET) 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. - 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. - The KeyMap class has a new attribute called "SortBy". It controls the order in which keys are returned by the astMapKey (AST_MAPKEY) function. Keys can be sorted alphabetically or by age, or left unsorted. - Access to KeyMaps holding thousands of entries is now significantly faster. - KeyMaps can now hold word (i.e. "short int" or INTEGER*2) values. Main Changes in V5.3-1 ----------------------- - The KeyMap class has a new method called astMapCopy/AST_MAPCOPY that copies entries from one KeyMap to another KeyMap. - The KeyMap class now supports entries that have undefined values. A new method called astMapPutU/AST_MAPPUTU will store an entry with undefined value in a keymap. - The KeyMap class has a new boolean attribute called MapLocked. If true (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 false (zero). - 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. - 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. - A bug has been fixed in the astRebin(Seq)/AST_REBIN(SEQ) methods that could cause flux to be lost from the edges of the supplied array. - A bug has been fixed in the astRebin(Seq)/AST_REBIN(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. - The StcsChan class now ignores case when reading STC-S phrases (except that units strings are still case sensitive). - The Channel class now has an Indent attribute that controls indentation in the text created by astWrite/AST_WRITE. The StcsIndent and XmlIndent attributes have been removed. - All classes of Channel now use the string "" to represent the floating point value AST__BAD, rather than the literal formatted value (typically "-1.79769313486232e+308" ). - The KeyMap class now uses the string "" to represent the floating point value AST__BAD, rather than the literal formatted value (typically "-1.79769313486232e+308" ). - The KeyMap class has a new method called astMapPutElem/AST_MAPPUTELEM 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. - The DSBSpecFrame class now reports an error if the local oscillator frequency is less than the absoliute value of the intermediate frequency. - A new method astQuadApprox produces a quadratic fit to a 2D Mapping. - A new method astSkyOffsetMap produces a Mapping from absolute SkyFrame coordinates to offset SkyFrame coordinates. Main Changes in Version 5.3 --------------------------- - The details of how a Frame is aligned with another Frame by the astFindFrame and astConvert (AST_FINDFRAME and AST_CONVERT) 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. - The arrays that supply input values to astMapPut1 are now declared "const". - Added method astMatchAxes (AST_MATCHAXES) to the Frame class. This allows corresponding axes in two Frames to be identified. - The astAddFrame (AST_ADDFRAME) method can now be used to append one or more axes to all Frames in a FrameSet. Main Changes in Version 5.1 --------------------------- - A new method called astSetFitsCM (AST_SETFITSCM) 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). - 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. - The TimeMap conversions "TTTOTDB" and "TDBTOTT", and the SpecMap conversions "TPF2HL" and "HLF2TP", now have an additional argument - the observer's geodetic altitude. - 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. - A new class of Channel, called StcsChan, has been added that allows conversion of suitable AST Objects to and from IVOA STC-S format. - A new method called astDownsize (AST_DOWNSIZE) 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. - A new constructor called astOutline (AST_OUTLINE) 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. - A new method called astRemoveRegions (AST_REMOVEREGIONS) has been added to the Mapping class. It removes the masking effects of any Regions found within a (possibly compound) Mapping or Frame. In effect, it replaces each Region found within the Mapping or Frame with a UnitMap or equivalent Frame. - A new set of methods, called astMapGetElem (AST_MAPGETELEM) has been added to the KeyMap class. They allow a single element of a vector valued entry to be returned. - A new attribute called KeyError has been added to the KeyMap Class. It controls whether the astMapGet... (AST_MAPGET...) family of functions report an error if an entry with the requested key does not exist in the KeyMap. Main Changes in Version 5.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. - The values of the AST__THREADSAFE macro (defined in ast.h) have been changed from "yes" and "no" to "1" and "0". - The PointList class has a new method, astPoints, that copies the axis values from the PointList into a supplied array. - The PointList class has a new (read-only) attribute, ListSize, that gives the number of points stored in the PointList. - A new method (astIntersect) has been added to the Frame class. It determines the position at which two geodesic curves intersect. - The XmlStrict attribute and astXmlWarnings function have been removed. The same functionality is now available via the existing Strict attribute, a new attribute called ReportLevel, and a new function called astWarnings. - 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. - 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. - The default gap size between the ISO date/time labels used by the Plot class when displaying an annotated axis described by a TimeFrame has been changed. The changes are meant to improve the labelling of calendar time axes that span intervals from a day to a few years. Main Changes in Version 5.0 --------------------------- - AST is now thread-safe. Many of the macro definitions in the "ast.h" header file have changed, and so all source code that include "ast.h" should be re-compiled. - 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. - Addition of a new class called Plot3D that provides facilities for producing 3-dimensional annotated coordinate grids. - 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). - 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. - 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. Main Changes in Version 4.5 --------------------------- - 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. - 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. - Addition of a new method call astPurgeWCS (AST_PURGEWCS) to the FitsChan class. This method removes all WCS-related header cards from a FitsChan. - The astRebinSeq functions now have an extra parameter that is used to record the total number of input data val;ues 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 THAT USES ASTREBINSEQ TO BE MODIFIED TO INCLUDE THE NEW PARAMETER (CALLED "NUSED"). - 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. - 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 (AST_GRFSET) function. - Functions registered with the Plot class using astGrfSet (AST_GRFSET) now take a new additional integer parameter, "grfcon". The Plot class sets this parameter to value of the Plot's GrfContext attribute before calling the graphics function. NOTE, THIS CHANGE WILL REQUIRE EXISTING CODE THAT USES astGrfSet (AST_GRFSET) TO BE MODIFIED TO INCLUDE THE NEW PARAMETER. - Support has been added for the FITS-WCS "HPX" projection (HEALPix). - 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). - 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". - A new method 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. - A bug has been fixed that could segmentation violations when setting attribute values. Main Changes in Version 4.4 --------------------------- - The astFindFrame (AST_FINDFRAME) method 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. - 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 (AST_CONVERT). - 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. - The number of digits used to format the Frame attributes ObsLat and ObsLon has been increased. - 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 within the offset coordinate systems (that is, a UnitMap will always be used to align the two SkyFrames). - The Plot class has a new attribute called ForceExterior that can be used to force exterior (rather than interior) tick marks to be produced, even if this would result in less than 3 tick marks being produced. - The TimeFrame class now supports conversion between angle based timescales such as UT1 and atomic based timescales such as UTC. Main Changes in Version 4.3 --------------------------- - 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. - The astGetFitsS (AST_GETFITSS) function now strips trailing white space from the returned string, if the original string contains 8 or fewer characters. Main Changes in Version 4.2 --------------------------- - 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. - 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. - The FitsChan class has a new method called astRetainFits (AST_RETAINFITS) 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. - 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. - A problem with unaligned memory access that could cause bus errors on Solaris has been fixed. - A new function called astTune (or AST_TUNE) 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. - A new method called astTranGrid (AST_TRANGRID in Fortran) 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. - 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. - 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. - The behaviour of the astConvert (AST_CONVERT) 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). Main Changes in Version 4.1 --------------------------- - A new control flag has been added to the AST_RESAMPLE/astResample functions which produces approximate flux conservation. - The SkyFrame class now supports a System value of "AZEL" corresponding to horizon (azimuth/elevation) coordinates. - The FitsChan class allows the non-standard strings "AZ--" and "EL--" to be used as axis types in FITS-WCS CTYPE keyword values. - The Frame class now has attributes ObsLon and ObsLat to specify the geodetic longitude and latitude of the observer. - 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. - 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. - 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. Main Changes in Version 4.0 --------------------------- - Experimental support for reading IVOA Space-Time-Coordinates (STC) descriptions using the XmlChan class has been added. Support is included for a subset of V1.20 of the draft STC specification. - A new set of methods (AST_REBIN/astRebin) has been added to the Mapping class. These are accurately flux-conserving alternatives to the existing AST_RESAMPLE/astResample methods. Main Changes in Version 3.7 --------------------------- - 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. Main Changes in Version 3.6 --------------------------- - 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. - The Plot class has a new attribute called Clip which controls the clipping performed by AST at the plot boundary. - The PolyMap class has been modified to allow a PolyMap to be written succesfully to a FitsChan using Native encoding. - 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. Main Changes in Version 3.5 --------------------------- - 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. - 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. - 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. - 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. - 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. - Methods have been added to the FitsChan class to allow values for named keywords to be changed or added. - 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 the astRate (AST_RATE) method will need to be changed.