1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
|
AST Library
-----------
A new release (V8.3.0) 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
----------------------------
- 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<X> (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<X> 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<X> 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<X> 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
"<major>.<minor>-<release>" to "<major>.<minor>.<release>".
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<X> (AST_GETFITS<X>) 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 "<bad>" 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 "<bad>" 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<X>/AST_MAPPUTELEM<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.
- 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<X> 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<X> (AST_MAPGETELEM<X>) 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<X>/astResample<X>
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<X>/astRebin<X>) has been added to
the Mapping class. These are accurately flux-conserving alternatives to the
existing AST_RESAMPLE<X>/astResample<X> 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.
|