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
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
|
.RP
.TL
IRAF Version 2.10 Revisions Summary
.AU
IRAF Group
.br
.K2 "" "" "\(dg"
.br
July 1992
.AB
A summary of the revisions made to the IRAF for the version 2.10 release are
presented. V2.10 is a major IRAF release, meaning that there were
significant additions to both the system and applications software, and the
release will eventually be made available on all supported systems. This
document deals with only the changes to the IRAF core system and NOAO
packages. The many layered packages available for IRAF follow independent
release schedules and are documented separately. This revisions summary is
divided into three main sections: system revisions, IRAF and NOAO
applications revisions, and revisions to the IRAF programming environment.
.AE
.pn 1
.bp
.ce
.ps +2
\fBContents\fR
.ps -2
.sp 3
.sp
1.\h'|0.4i'\fBIntroduction\fP\l'|5.6i.'\0\01
.sp
2.\h'|0.4i'\fBIRAF System Revisions\fP\l'|5.6i.'\0\01
.br
\h'|0.4i'2.1.\h'|0.9i'Starting up V2.10 IRAF\l'|5.6i.'\0\01
.br
\h'|0.9i'2.1.1.\h'|1.5i'LOGIN.CL changes\l'|5.6i.'\0\01
.br
\h'|0.9i'2.1.2.\h'|1.5i'Compatibility Issues\l'|5.6i.'\0\02
.br
\h'|0.4i'2.2.\h'|0.9i'CL Enhancements\l'|5.6i.'\0\03
.br
\h'|0.9i'2.2.1.\h'|1.5i'Formatted scans and prints, scan from a pipe\l'|5.6i.'\0\03
.br
\h'|0.9i'2.2.2.\h'|1.5i'Unlearning package parameters\l'|5.6i.'\0\04
.br
\h'|0.9i'2.2.3.\h'|1.5i'Loading packages at login time\l'|5.6i.'\0\04
.br
\h'|0.9i'2.2.4.\h'|1.5i'Environment variables\l'|5.6i.'\0\04
.br
\h'|0.4i'2.3.\h'|0.9i'System Management Related Changes\l'|5.6i.'\0\05
.br
\h'|0.9i'2.3.1.\h'|1.5i'Install script\l'|5.6i.'\0\05
.br
\h'|0.9i'2.3.2.\h'|1.5i'Caching of termcap entries\l'|5.6i.'\0\05
.br
\h'|0.9i'2.3.3.\h'|1.5i'Sorting of UNIX directories\l'|5.6i.'\0\05
.br
\h'|0.9i'2.3.4.\h'|1.5i'UMASK support\l'|5.6i.'\0\05
.br
\h'|0.4i'2.4.\h'|0.9i'Networking Enhancements\l'|5.6i.'\0\05
.br
\h'|0.9i'2.4.1.\h'|1.5i'New networking driver\l'|5.6i.'\0\05
.br
\h'|1.5i'2.4.1.1.\h'|2.2i'How it works\l'|5.6i.'\0\06
.br
\h'|1.5i'2.4.1.2.\h'|2.2i'The .irafhosts file\l'|5.6i.'\0\06
.br
\h'|1.5i'2.4.1.3.\h'|2.2i'Compatibility\l'|5.6i.'\0\07
.br
\h'|0.9i'2.4.2.\h'|1.5i'The hosts file\l'|5.6i.'\0\07
.br
\h'|0.4i'2.5.\h'|0.9i'Magtape System Enhancements\l'|5.6i.'\0\08
.br
\h'|0.9i'2.5.1.\h'|1.5i'Basic usage\l'|5.6i.'\0\08
.br
\h'|1.5i'2.5.1.1.\h'|2.2i'Logical device names\l'|5.6i.'\0\08
.br
\h'|1.5i'2.5.1.2.\h'|2.2i'Device allocation\l'|5.6i.'\0\09
.br
\h'|1.5i'2.5.1.3.\h'|2.2i'Device status\l'|5.6i.'\0\09
.br
\h'|1.5i'2.5.1.4.\h'|2.2i'File positioning\l'|5.6i.'\0\10
.br
\h'|1.5i'2.5.1.5.\h'|2.2i'Rewind\l'|5.6i.'\0\11
.br
\h'|0.9i'2.5.2.\h'|1.5i'New magtape driver\l'|5.6i.'\0\11
.br
\h'|1.5i'2.5.2.1.\h'|2.2i'Software structure\l'|5.6i.'\0\11
.br
\h'|1.5i'2.5.2.2.\h'|2.2i'Driver features\l'|5.6i.'\0\12
.br
\h'|0.9i'2.5.3.\h'|1.5i'Tapecap\l'|5.6i.'\0\12
.br
\h'|1.5i'2.5.3.1.\h'|2.2i'Using tapecap\l'|5.6i.'\0\13
.br
\h'|1.5i'2.5.3.2.\h'|2.2i'Configuring tapecap\l'|5.6i.'\0\13
.br
\h'|1.5i'2.5.3.3.\h'|2.2i'Supported devices\l'|5.6i.'\0\14
.br
\h'|0.9i'2.5.4.\h'|1.5i'Status output\l'|5.6i.'\0\15
.br
\h'|0.9i'2.5.5.\h'|1.5i'Error recovery\l'|5.6i.'\0\16
.br
\h'|0.9i'2.5.6.\h'|1.5i'Device optimization\l'|5.6i.'\0\16
.br
\h'|0.9i'2.5.7.\h'|1.5i'MTIO interface changes\l'|5.6i.'\0\17
.br
\h'|0.4i'2.6.\h'|0.9i'Graphics and Imaging Subsystem Enhancements\l'|5.6i.'\0\17
.br
\h'|0.9i'2.6.1.\h'|1.5i'New graphics applications\l'|5.6i.'\0\17
.br
\h'|0.9i'2.6.2.\h'|1.5i'Graphics system changes\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.1.\h'|2.2i'Encapsulated postscript SGI kernel\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.2.\h'|2.2i'Graphics output to the default printer\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.3.\h'|2.2i'Tick spacing algorithm improved\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.4.\h'|2.2i'Graphics metacode buffer\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.5.\h'|2.2i'IMTOOL changes\l'|5.6i.'\0\17
.br
\h'|1.5i'2.6.2.6.\h'|2.2i'IMTOOLRC changes\l'|5.6i.'\0\18
.br
\h'|1.5i'2.6.2.7.\h'|2.2i'X11 support\l'|5.6i.'\0\18
.br
\h'|0.4i'2.7.\h'|0.9i'Image Structures\l'|5.6i.'\0\18
.br
\h'|0.9i'2.7.1.\h'|1.5i'Image I/O (IMIO)\l'|5.6i.'\0\18
.br
\h'|1.5i'2.7.1.1.\h'|2.2i'Null images\l'|5.6i.'\0\18
.br
\h'|1.5i'2.7.1.2.\h'|2.2i'Preallocating pixel file storage\l'|5.6i.'\0\18
.br
\h'|1.5i'2.7.1.3.\h'|2.2i'Image templates now sorted\l'|5.6i.'\0\19
.br
\h'|1.5i'2.7.1.4.\h'|2.2i'The dev$pix test image\l'|5.6i.'\0\19
.br
\h'|0.9i'2.7.2.\h'|1.5i'Image kernels (IKI)\l'|5.6i.'\0\19
.br
\h'|1.5i'2.7.2.1.\h'|2.2i'New PLF image kernel\l'|5.6i.'\0\19
.br
\h'|1.5i'2.7.2.2.\h'|2.2i'OIF image kernel changes\l'|5.6i.'\0\20
.br
\h'|1.5i'2.7.2.3.\h'|2.2i'STF image kernel changes\l'|5.6i.'\0\20
.br
\h'|1.5i'2.7.2.4.\h'|2.2i'QPF image kernel changes\l'|5.6i.'\0\21
.br
\h'|0.9i'2.7.3.\h'|1.5i'World coordinate system support (MWCS)\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.1.\h'|2.2i'Applications support\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.2.\h'|2.2i'New function drivers\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.3.\h'|2.2i'WCS attributes\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.4.\h'|2.2i'Axis mapping\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.5.\h'|2.2i'MWCS save format\l'|5.6i.'\0\22
.br
\h'|1.5i'2.7.3.6.\h'|2.2i'Bug fixes\l'|5.6i.'\0\22
.br
\h'|0.9i'2.7.4.\h'|1.5i'Event files (QPOE)\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.1.\h'|2.2i'Blocking factors\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.2.\h'|2.2i'Parameter defaults\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.3.\h'|2.2i'Referencing the current datafile in macros\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.4.\h'|2.2i'Bitmask expressions\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.5.\h'|2.2i'Large time filters\l'|5.6i.'\0\23
.br
\h'|1.5i'2.7.4.6.\h'|2.2i'Default filters\l'|5.6i.'\0\24
.br
\h'|1.5i'2.7.4.7.\h'|2.2i'Alternate coordinate systems\l'|5.6i.'\0\24
.br
\h'|0.4i'2.8.\h'|0.9i'System Specific Changes\l'|5.6i.'\0\25
.br
\h'|0.9i'2.8.1.\h'|1.5i'Sun/IRAF\l'|5.6i.'\0\25
.sp
3.\h'|0.4i'\fBIRAF and NOAO package revisions\fP\l'|5.6i.'\0\26
.br
\h'|0.4i'3.1.\h'|0.9i'Changes to the IRAF system packages\l'|5.6i.'\0\26
.br
\h'|0.9i'3.1.1.\h'|1.5i'DATAIO package modifications\l'|5.6i.'\0\26
.br
\h'|0.9i'3.1.2.\h'|1.5i'IMAGES package modifications\l'|5.6i.'\0\27
.br
\h'|0.9i'3.1.3.\h'|1.5i'IMAGES.TV package reorganization and modifications\l'|5.6i.'\0\27
.br
\h'|0.9i'3.1.4.\h'|1.5i'LISTS package modifications\l'|5.6i.'\0\27
.br
\h'|0.9i'3.1.5.\h'|1.5i'OBSOLETE package added\l'|5.6i.'\0\27
.br
\h'|0.9i'3.1.6.\h'|1.5i'PLOT package modifications\l'|5.6i.'\0\28
.br
\h'|0.9i'3.1.7.\h'|1.5i'PROTO Package reorganization and modifications\l'|5.6i.'\0\28
.br
\h'|0.9i'3.1.8.\h'|1.5i'Additions to XTOOLS and MATH\l'|5.6i.'\0\29
.br
\h'|0.9i'3.1.9.\h'|1.5i'Glossary of new tasks in the IRAF core system\l'|5.6i.'\0\29
.br
\h'|0.4i'3.2.\h'|0.9i'Changes to the NOAO Packages\l'|5.6i.'\0\29
.br
\h'|0.9i'3.2.1.\h'|1.5i'ARTDATA package modifications\l'|5.6i.'\0\29
.br
\h'|0.9i'3.2.2.\h'|1.5i'ASTUTIL package modifications\l'|5.6i.'\0\30
.br
\h'|0.9i'3.2.3.\h'|1.5i'DIGIPHOT package modifications\l'|5.6i.'\0\30
.br
\h'|0.9i'3.2.4.\h'|1.5i'DIGIPHOT.APPHOT package modifications\l'|5.6i.'\0\30
.br
\h'|0.9i'3.2.5.\h'|1.5i'DIGIPHOT.DAOPHOT (TESTPHOT) package modifications\l'|5.6i.'\0\30
.br
\h'|0.9i'3.2.6.\h'|1.5i'IMRED package modifications\l'|5.6i.'\0\31
.br
\h'|0.9i'3.2.7.\h'|1.5i'IMRED.CCDRED package modifications\l'|5.6i.'\0\32
.br
\h'|0.9i'3.2.8.\h'|1.5i'NOBSOLETE package added\l'|5.6i.'\0\32
.br
\h'|0.9i'3.2.9.\h'|1.5i'NPROTO package modifications\l'|5.6i.'\0\32
.br
\h'|0.9i'3.2.10.\h'|1.5i'ONEDSPEC package reductions\l'|5.6i.'\0\32
.br
\h'|0.9i'3.2.11.\h'|1.5i'RV package added\l'|5.6i.'\0\34
.br
\h'|0.9i'3.2.12.\h'|1.5i'TWODSPEC package modifications\l'|5.6i.'\0\34
.br
\h'|0.9i'3.2.13.\h'|1.5i'TWODSPEC.APEXTRACT package modifications\l'|5.6i.'\0\35
.br
\h'|0.9i'3.2.14.\h'|1.5i'TWODSPEC.LONGSLIT package modifications\l'|5.6i.'\0\36
.br
\h'|0.9i'3.2.15.\h'|1.5i'Glossary of new tasks in the NOAO packages\l'|5.6i.'\0\36
.sp
4.\h'|0.4i'\fBProgramming Environment Revisions\fP\l'|5.6i.'\0\39
.br
\h'|0.4i'4.1.\h'|0.9i'Compatibility Issues\l'|5.6i.'\0\39
.br
\h'|0.4i'4.2.\h'|0.9i'Portability Issues\l'|5.6i.'\0\39
.br
\h'|0.4i'4.3.\h'|0.9i'Software Tools\l'|5.6i.'\0\39
.br
\h'|0.9i'4.3.1.\h'|1.5i'LOGIPC feature\l'|5.6i.'\0\39
.br
\h'|0.9i'4.3.2.\h'|1.5i'XC changes\l'|5.6i.'\0\40
.br
\h'|0.9i'4.3.3.\h'|1.5i'SPPLINT code checker\l'|5.6i.'\0\41
.br
\h'|0.9i'4.3.4.\h'|1.5i'Multiple architecture support\l'|5.6i.'\0\41
.br
\h'|0.9i'4.3.5.\h'|1.5i'Package environments\l'|5.6i.'\0\41
.br
\h'|0.9i'4.3.6.\h'|1.5i'Finding module sources\l'|5.6i.'\0\41
.br
\h'|0.4i'4.4.\h'|0.9i'Programming Interface Changes\l'|5.6i.'\0\42
.br
\h'|0.9i'4.4.1.\h'|1.5i'IEEE floating support\l'|5.6i.'\0\42
.br
\h'|0.9i'4.4.2.\h'|1.5i'MATH libraries\l'|5.6i.'\0\42
.br
\h'|0.9i'4.4.3.\h'|1.5i'CLIO interface\l'|5.6i.'\0\42
.br
\h'|0.9i'4.4.4.\h'|1.5i'ETC interface\l'|5.6i.'\0\43
.br
\h'|1.5i'4.4.4.1.\h'|2.2i'Calling sequence for onentry changed\l'|5.6i.'\0\43
.br
\h'|1.5i'4.4.4.2.\h'|2.2i'New onerror and onexit procedures\l'|5.6i.'\0\43
.br
\h'|1.5i'4.4.4.3.\h'|2.2i'New gqsort routine\l'|5.6i.'\0\43
.br
\h'|0.9i'4.4.5.\h'|1.5i'FIO interface\l'|5.6i.'\0\44
.br
\h'|1.5i'4.4.5.1.\h'|2.2i'Nonblocking terminal i/o\l'|5.6i.'\0\44
.br
\h'|0.9i'4.4.6.\h'|1.5i'FMTIO interface\l'|5.6i.'\0\44
.br
\h'|0.9i'4.4.7.\h'|1.5i'GTY interface\l'|5.6i.'\0\45
.br
\h'|0.9i'4.4.8.\h'|1.5i'MTIO interface\l'|5.6i.'\0\45
.br
\h'|1.5i'4.4.8.1.\h'|2.2i'MTIO applications programming interface\l'|5.6i.'\0\45
.br
\h'|1.5i'4.4.8.2.\h'|2.2i'MTIO system procedures\l'|5.6i.'\0\46
.br
\h'|1.5i'4.4.8.3.\h'|2.2i'Magtape driver procedures\l'|5.6i.'\0\46
.br
\h'|0.9i'4.4.9.\h'|1.5i'MWCS interface\l'|5.6i.'\0\46
.sp
5.\h'|0.4i'\fBGetting Copies of this Revisions Summary\fP\l'|5.6i.'\0\47
.nr PN 0
.bp
.de XS
.DS
.ps -1
.vs -1p
.ft CB
..
.de XE
.DE
.ft R
.ps
.vs
..
.de i0 \" usage: .i0 <pathname> spacing
.fl \" Save the current
.nr xl \\n(nl \" line number and
.nr xp \\n% \" page number.
.KS
\\& \" Make space for the
.sp \\$2 \" plot, ejecting
\\& \" a new page if
.KE \" necessary.
.fl
.if \\n%>\\n(xp .nr xl 720 \" New page, 1" margin.
\\!! /irafsave save def \" "Encapsulate" the Post-
\\!! 0 72 \\n(xl 10 div sub translate \" Script plot, position
\\!! /erasepage {} def \" the plot on the page,
\\!! /initgraphics {} def \" disable irreversible
\\!! /showpage {} def \" PostScript operations.
.fl \" Cure a bug with ".sy".
.sy sed 's/^/!/' \\$1 \" Escape plot for devps.
\\!! irafsave restore \" Restore the P.S. context
.rr xl
.rr xp
..
.NH
Introduction
.PP
This document summarizes the changes made to IRAF in version 2.10. V2.10
is a major release of IRAF, meaning that there were significant changes to
both the system and applications software, and the release will eventually
be made available on all supported platforms.
.PP
By IRAF version 2.10 we refer only to the core IRAF system and NOAO
packages. Numerous external or "layered" packages are also available for
IRAF, for example the NSO package (solar astronomy), the ICE package (data
acquisition), the STSDAS package from STScI (HST data reduction and
analysis), the TABLES package from STScI (tabular data), the XRAY package
from SAO (X-ray data analysis), and so on. These packages are layered upon
the IRAF core system, and once installed, are indistinguishable from the
rest of IRAF. Layered packages are developed and maintained separately
from the core IRAF release and follow independent release schedules, hence
we will not discuss them further here. Contact the IRAF project or any
of the outside groups supporting IRAF layered packages for additional
information on what is available.
.PP
This document is intended only as an overview of what is new in version 2.10
IRAF. More detailed documentation will be found in the systems and
applications notes files (files \f(CWsysnotes.v210.Z\fR and
\f(CWpkgnotes.v210.Z\fR in the network archive), in the online help pages,
and in any reference papers or user's manuals distributed with the software.
The IRAF Newsletter is a good source of information for new IRAF software.
.PP
The reader is assumed to already be familiar with the basic concepts and
operation of the IRAF system. In particular, familiarity with V2.9 IRAF is
assumed.
.NH
IRAF System Revisions
.NH 2
Starting up V2.10 IRAF
.PP
Before attempting to start V2.10 IRAF each user should run the \fImkiraf\fR
command in their IRAF login directory. This will create a new \f(CWlogin.cl\fR
file and \f(CWuparm\fR (user parameter) directory. \fImkiraf\fR should be
allowed to delete any existing parameter files, as there have been many
changes to task parameter sets in the new version of IRAF.
.NH 3
LOGIN.CL changes
.PP
The \f(CWlogin.cl\fR file is read by the CL during startup to perform some
runtime initialization and to customize IRAF for each user. A standard
\f(CWlogin.cl\fR file is created and initialized by the \fImkiraf\fR command
when the user's IRAF login directory is configured. For V2.10 IRAF the
\f(CWlogin.cl\fR file has undergone the following changes.
.RS
.IP \(bu
The IRAF version number is now checked automatically whenever you login,
and a warning message will be printed if your \f(CWlogin.cl\fR file is
out of date. If you see this message it means that important changes have
been made to the \f(CWlogin.cl\fR file and you need to rerun \fImkiraf\fR
to update this file.
.IP \(bu
Most of core IRAF system packages are now loaded automatically at login time
by the \f(CWlogin.cl\fR file. If you use a personal \f(CWloginuser.cl\fR
file and you previously loaded any core system packages in this file, you
should edit the file and remove those entries.
.IP \(bu
A "quiet" login option is now provided. If a file named \f(CW.hushiraf\fR
exists in the login directory when you start up the CL, printing of the
usual login messages will be disabled (the only output seen will be the "cl>"
prompt).
.IP \(bu
On UNIX/IRAF systems the login script now looks at the host system
environment variable \f(CWTERM\fR and checks for the common terminal types
"sun" and "xterm", configuring the IRAF \fIstty\fR accordingly if either
terminal type is seen (note that the default number of lines set for an
xterm terminal window may need to be modified). The logic used to do this
is not foolproof however, and is provided only as an example illustrating
how to make use of the host system terminal definitions. You may need to
customize this portion of the script, or override it in your
\f(CWloginuser.cl\fR file.
.IP \(bu
The CL hidden parameter \f(CWshowtype\fR is now set to "yes" by default.
This will cause a character to be printed after the name of each package or
named pset in CL package menus to allow these objects to be easily
distinguished from ordinary tasks. Packages are marked with a trailing
period (".") and psets with an ampersand ("@"). This feature can be
disabled with a "showtype=no" statement.
.IP \(bu
The V2.10 login script contains a call to a new internal (non-user) IRAF
task \fImtclean\fR. Be sure to leave this alone, it is required for the
correct operation of the new magtape i/o system.
.RE
.LP
The USER package defined in the template \f(CWlogin.cl\fR has been
extensively revised, adding many new tasks. These are mainly used to
make common UNIX commands available from within the IRAF environment.
Type "?user" in the CL to see what is available, e.g.:
.XS
cl> ?user
adb cp fc lpq mv rlogin spell top
bc csh find ls nbugs rsh sps touch
buglog date finger mail nm rtar strings vi
cal df ftp make od ruptime su w
cat diff generic man ps rusers sync wc
cls du grep mkpkg pwd rwho telnet wtar
comm emacs less mon rcp sh tip xc
.XE
.LP
Note that since the USER package is defined in the user's login file it is
easily customized to add new tasks. Refer to the existing package for
examples illustrating how to do this.
.RE
.NH 3
Compatibility Issues
.PP
Version 2.10 IRAF requires the new \f(CWlogin.cl\fR file; if the CL does not
start up correctly, it may be because the user has not done a \fImkiraf\fR,
or because they have some construct in their \f(CWloginuser.cl\fR file which
is incompatible with V2.10 IRAF. The V2.10 login file is usable with V2.9
IRAF, however this is not recommended.
.PP
There have been many task \fBparameter changes\fR between V2.9 and V2.10.
If "parameter not found" messages are seen, most likely the user has an old
\f(CWuparm\fR directory, or has been switching back and forth between IRAF
versions. An \fIunlearn\fR or \fImkiraf\fR should fix the problem.
.PP
The V2.10 IRAF \fBnetworking system\fR is not fully compatible with earlier
versions of IRAF. This can cause problems when, e.g., a newly installed
V2.10 system is used to communicate with an older version of IRAF on another
system. The best solution is to update to V2.10 on all systems, but if this
is not convenient it is possible to configure the networking system to avoid
the problems. See the discussion of the new networking system given below.
.PP
Accessing a \fBremote magtape device\fR via IRAF networking will not work
between V2.10 and older versions of IRAF (the remote procedure calls have
changed). To remotely access magtape devices you will need to install V2.10
IRAF on both the client and server nodes.
.PP
In most respects installing V2.10 IRAF will be very similar to installing
earlier versions of IRAF. The main difference is the \fBtapecap file\fR
required to use the new magtape system. The old \f(CWdev$devices\fR file
is no longer used. See the discussion of the new magtape system given below
for more details.
.PP
Due to name changes in certain low level system routines (made to avoid name
clashes when linking with host level libraries) the V2.10 libraries are
incompatible with older versions of IRAF. Any IRAF programs or external
packages \fBrelinked\fR under V2.10 will have to be fully recompiled or the
linker will complain about unresolved externals. Note that so long as the
old program is not relinked there should be no problem, even if the program
uses the IRAF shared image, since the V2.9 shared image is included in V2.10
(this applies to Sun/IRAF systems only).
.PP
Starting with V2.10, many IRAF applications now fully support generalized
\fBworld coordinates\fR (WCS). While in principle this should not pose any
compatibility problems, the image headers do contain more information in
V2.10 than previously, and there can be problems if, for example, an input
image contains an illegal WCS. Previous versions of IRAF would ignore this
but in V2.10 such an image could result in an error or warning message.
If WCS related problems are encountered it is probably best to contact the
IRAF group for help.
.NH 2
CL Enhancements
.NH 3
Formatted scans and prints, scan from a pipe
.PP
New in the V2.10 CL (command language) are formatted scan and print routines,
and the ability to scan from a pipe or other form of redirected input. These
new facilities will prove most useful in CL scripts.
.PP
The old unformatted scan and print routines are the following. These are
still available and are the simplest routines to use where they are adequate.
.XS
scan (arglist) # scan standard input
fscan (list, arglist) # scan a list
print (expr, exprlist) # print to standard output
fprint (param, exprlist) # print to a string buffer
.XE
.LP
For example,
.XS
list = "\fIfilename\fP"
while (fscan (list, x, y) != EOF)
print ("x=", x, "y=", y)
.XE
.LP
In the above, \fIarglist\fR is a comma delimited list of output arguments
(parameter or parameter field names) and \fIexprlist\fR is a comma delimited
list of expressions to be printed. \fIlist\fR is the name of a
list-structured parameter to be scanned, and \fIparam\fR is the name of a
parameter, the value field of which is to receive the output string. The
unformatted scan routines will automatically convert output data values to
match the types of the output arguments.
.PP
The new formatted routines are as follows. These take an extra
\fIformat\fR argument which tells how to parse the input string in the case
of the \fIscanf\fR routines, or how to format the output in the case of the
\fIprintf\fR routines.
.XS
scanf (format, arglist) # formatted scan from stdin
fscanf (list, format, arglist) # formatted scan from a list
printf (format, exprlist) # formatted print to standard output
.XE
.PP
Currently there is no \fIfprintf\fR routine. For the \fIprintf\fR routine
the \fIformat\fR argument is similar to that for the SPP/VOS \fIprintf\fR
(which is similar to the C \fIprintf\fR). The \fIformat\fR argument for the
\fIscanf\fR routines is the same as the VOS LIBC \fIscanf\fR, which is
patterned after the C \fIscanf\fR (in fact the UNIX manual page for
\fIscanf\fR can be used as a guide to the CL \fIscanf\fR with only minor
deviations).
.LP
The following examples illustrate the new routines.
.XS
cl> printf ("%d foo %7.3f\\\\n", 5, 12.123) | scanf ("%d foo %g", i, x)
cl> printf ("new values are i=%d, x=%g\\\\n", i, x)
new values are i=5, x=12.123
.XE
or,
.XS
while (fscanf (list, " %*d size=%d name=%s", i, s1) != EOF)
printf ("size=%05o, name=`%s'\\\\n", i, s1)
.XE
.LP
Note in the first example the use of \fIscanf\fR to scan from a pipe. There
are actually two different versions of \fIscan\fR and \fIscanf\fR in V2.10
IRAF, an intrinsic function version and a procedure version. When called as
an intrinsic function, a \fIscan\fR routine returns as its function value
the number of operands successfully scanned, or EOF. When called as a
procedure, the function value of a \fIscan\fR routine is discarded.
.PP
Here is another example illustrating scan from a pipe, in this case using
an unformatted scan since the \fIhselect\fR output is in a simple tabular
format (\fIhselect\fR prints selected fields of the image header).
.XS
cl> hselect dev$pix naxis,naxis1,naxis2 yes | scan (i, j, k)
cl> printf ("naxis=%d, axlen=[%d,%d]\\\\n", i, j, k)
naxis=2, axlen=[512,512]
.XE
.LP
When using the formatted scan routines, care must be taken to ensure that
the data types implied by the \fIformat\fR argument match the actual data
types of the output parameters. The \fIscanf\fR routines are implemented
using an internal call to the C (LIBC) \fIscanf\fR, with the output
parameter value fields referenced directly via a pointer. If the data type
is incorrect the output value may be meaningless.
.NH 3
Unlearning package parameters
.PP
The \fIunlearn\fR task now works for package parameters as well as task
parameters. In a command such as "unlearn pkgname" the package parameters
for the named package will be unlearned, as well as the parameters for
all the tasks in the package. This works whether or not the package is
loaded.
.NH 3
Loading packages at login time
.PP
A bug has been fixed which affected packages with package parameters loaded
at login time. It is now permissible to load any package at login time
regardless of whether it has package parameters (V2.9 users will recognize
this bug as one which prevented loading CCDRED in the login script).
.NH 3
Environment variables
.PP
The environment variables \f(CWimtype\fP, \f(CWcmbuflen\fP,
and \f(CWmin_lenuserarea\fP are now defined at login time. Previously,
explicit values for these variables were not defined, and the system
would use the builtin internal defaults. Explicit definitions were
added so that the user can query the current value, e.g.
.XS
cl> show cmbuflen
128000
.XE
A \fIshow\fR or \fIset\fR with no arguments will print the full environment
list. New values for these and other common environment variables may be
set in the user \f(CWlogin.cl\fP file.
.NH 2
System Management Related Changes
.NH 3
Install script
.PP
The UNIX/IRAF install script underwent minor changes to make it more
robust. Problems are still possible if the IRAF root pathname is set to
different values in the various system dependent files modified by the
script. The system as shipped from NOAO has the same initial root pathname
set in all such files, but problems can occur if the files are manually
edited during or after installation. To avoid problems always use the
install script to make system changes such as installing at a different root
directory.
.NH 3
Caching of termcap entries
.PP
User caching of termcap or graphcap entries with the old \f(CWmkttydata\fR
task is no longer recommended. The most common entries (e.g. sun, xterm,
vt100) are already cached. Modern workstations are so fast that there is no
longer much point in caching termcap entries; it is sufficient to merely
place local additions near the top of the file. Most programs that
repeatedly access the terminal cache the entries internally during
execution. Custom caching of termcap or graphcap device entries requires
that the system be relinked, and the risk inherent in relinking the system
(hence giving up the prebuilt, pretested binaries) is not worth the small
performance gain achieved.
.NH 3
Sorting of UNIX directories
.PP
The UNIX-based versions of IRAF now sort UNIX directories whenever a
directory is accessed to expand a file or image template. This will fix the
problem sometimes seen in earlier versions of IRAF, in which an image
template could appear to be expanded in a seemingly random fashion.
.NH 3
UMASK support
.PP
The UNIX-based versions of IRAF now support the host level \fIumask\fR file
creation mask correctly. If files or directories created by V2.10 IRAF do
not have the desired permissions, it is because you do not have umask set
correctly at the UNIX level (most people set umask to 022).
.NH 2
Networking Enhancements
.NH 3
New networking driver
.PP
The UNIX/IRAF networking driver has been completely rewritten for version
2.10 IRAF, with the goals of eliminating redundant password prompts,
improving efficiency, and enhancing system security. For the most part the
changes will be transparent to the user. Once the IRAF system manager has
configured the \f(CWdev$hosts\fR file for the local site the networking
system should function automatically; in the default configuration a password
prompt should be seen only when connecting to a server for which \fIrhosts\fR
("trusted" hosts) permission is not granted.
.PP
The following information is provided mainly for IRAF system managers.
In normal use the user does not need to understand how the networking
system functions.
.NH 4
How it works
.PP
The IRAF networking system is an RPC (remote procedure call) mechanism for
the IRAF kernel; all kernel procedures may execute either locally or
remotely, and the client and server nodes do not even need to run the same
operating system. IRAF applications may be distributed, and may access
resources which reside anywhere on the network. IRAF networking is layered
upon standard low level networking protocols such as TCP/IP and DECNET.
.PP
The IRAF networking system defines one or more \fIconnection protocols\fR
which are used by a client to connect to the IRAF kernel server on a remote
machine. The old networking driver supported only one connection protocol,
the \fIrexec\fR protocol, which requires a login name and password. The new
driver adds support for an \fIrsh\fR based protocol. This is the default
connection protocol for V2.10 IRAF; automatic fallback to the rexec protocol
is provided in the event that the rsh connect fails. The rsh connection
protocol bootstraps off the suid-root \fIrsh\fR command found in most BSD
derived UNIX systems (most System V systems provide the equivalent command
\fIremsh\fR).
.PP
The connection protocol is used to start the \fIin.irafksd\fR IRAF
networking daemon on the remote server node. This daemon executes with the
same uid and permissions as the account which initiated the connection, and
there is one such daemon per user per server node. Once the daemon has been
started via the rsh or rexec connection protocol, new client connections are
made very quickly, by merely forking the daemon to create the IRAF kernel
server process, and setting up a direct socket connection between the IRAF
client process and the server. The daemon process runs indefinitely,
shutting down if idle for longer than a certain interval (the current
default is one hour). When connecting to the daemon a client must supply an
authentication key to gain access to the daemon. If authentication fails
the daemon shuts down and it is necessary to reestablish the connection.
.NH 4
The .irafhosts file
.PP
The new networking driver retains the old \fIirafhosts\fR file, used to
store information telling how to connect to various IRAF hosts (the
irafhosts file is the file \f(CW.irafhosts\fR in the user's login
directory). The networking system will automatically create this file for
the user if the file is not found; if an old-style file is found, it will be
edited by the system to make it compatible with the new networking system.
While it is no longer necessary for the irafhosts file to contain password
information to avoid password prompts, the file is used to store the user
authentication key, hence the file should be read protected. The networking
system will automatically read protect the file if it is not already
protected.
.PP
To avoid authentication failures when clients on different nodes attempt to
connect to the same server, the same authentication code should be used on
all server nodes. Unfortunately there is no way that the networking system
can do this automatically (without going to some much more complicated
authentication scheme, such as a key server), so users who make heavy use of
the networking system should install a copy of their irafhosts file
in their login directory on all server nodes. If this is not done the
networking system will still work, but will be less efficient than it could
be, when simultaneously accessing the same server from IRAF sessions running
on multiple client nodes.
.PP
The truly paranoid may not be happy with even the unique user
authentication code used in the current networking system. If this is the
case the \fIport\fR parameter (see below) may be set to zero to force rsh to
be used for every connection (in effect the in.irafksd daemon has to be
restarted for every connection). This imposes an overhead of as much as
several seconds on every server connect. Alternatively, \f(CWKSAUTH\fR can
be defined in the user environment at login time, setting the value string
to some random integer value selected at login time. If defined in the user
environment, \f(CWKSAUTH\fR will override the value of \fIauth\fR given in
the irafhosts file. This approach would at least allow efficient connects
for a single login process tree.
.PP
The irafhosts file consists of two sections. The first section
defines several networking parameters: \f(CWport\fP, \f(CWauth\fP,
\f(CWhiport\fP, and \f(CWtimeout\fP. The second section is a list of
server nodes, with login and password information describing how to connect
to each node.
.XS
port = default
auth = 1234567890
hiport = default
timeout = default
ursa : <user> ?
* : <user> <user>
.XE
.LP
The example above illustrates a typical irafhosts file. Typically a unique
authentication code is allocated automatically by the system when the file
is first created, and the other parameters retain their default values as
shown (i.e., the string "default"). In the example the host list consists
of an entry for the node "ursa", and an entry for everything else. The
format of a host entry is "\fIhost-name : login-name password\fP". If
\fIlogin-name\fR is the reserved string "<user>" the user name on the client
node is used for login authentication on the remote node. Setting the
password to "<user>" as well causes the rsh connect protocol to be used;
anything else causes the rexec protocol to be used. If the rexec protocol
is used the password field may be set to the actual password or to the
string "?", in which case the system will prompt for the password whenever a
connection attempt is made. The "*" entry should always be the last entry
in the list, since it matches all nodes. The default host list contains
only the "*" entry.
.PP
Additional information on the irafhosts file is provided in the
comments in the file \f(CWdev$irafhosts\fR, and in the system notes file.
.NH 4
Compatibility
.PP
By default the new networking system will try to use the rsh protocol to
connect to the server node. If the server is running an older version of
IRAF the connection attempt will hang and eventually time out. If this
occurs the networking system will fall back on the rexec protocol and issue
a password prompt, but by then the user will probably have interrupted the
connect. The best way to avoid this problem is to update the server node
to V2.10, but if this is not possible, an explicit entry for the node can
be made in the irafhosts file, setting the password field so that
the rexec protocol will be used.
.PP
An older, e.g. V2.9 client connecting to a V2.10 server should not be a
problem. In this case the V2.10 server will see an attempt to connect with
the rexec protocol, which should be processed as in the past.
.PP
Aside from the problem of making a connection the pre-V2.10 and V2.10
networking systems are compatible, \fIexcept\fR for the magtape i/o calls.
Since the magtape driver calling sequences were changed in V2.10, remote
magtape access between V2.10 and older systems is not supported.
.NH 3
The hosts file
.PP
The file \f(CWdev$hosts\fR is used to interface new host machines to the
IRAF networking system. This file defines, for each host, the primary
host name, any aliases, and the command to be executed remotely to start
up the IRAF kernel server on a remote node.
.PP
The format and role of the hosts file is unchanged in V2.10. Two changes
were made which affect the use of this file.
.RS
.IP \(bu
A user can now have a private copy of the hosts file. To enable this feature,
the variable \f(CWirafhnt\fR (IRAF host name table) should be defined in
the user's IRAF or host level environment, with the string value giving the
file pathname of the user's private host name table file.
.IP \(bu
The maximum number of entries in the host name table has been increased from
64 to 128. In the current implementation these entries are statically
buffered, so it is necessary to keep the maximum number of entries to a
reasonable value.
.RE
.LP
The hosts file must be configured to enable IRAF networking. IRAF networking
is disabled if there is no entry for the local host in this file. The
\fInetstatus\fR command may be used to examine the state of the host name
table after it has been loaded by the networking system.
.PP
There is another file \f(CWdev$uhosts\fR which often confuses people. This
file is not used by UNIX/IRAF and can be ignored; it is there for VMS/IRAF
and other IRAF implementations which do not provide the equivalent of the
UNIX system routine \fIgethostbyname\fR. On host machines which implement
name server facilities IRAF will use the name server, allowing any machine
on the internet to be accessed via IRAF networking, so long as there is an
entry in the system wide or user IRAF hosts file.
.NH 2
Magtape System Enhancements
.PP
The magtape subsystem underwent a major revision in V2.10. The VOS level
MTIO interface was extensively revised, and the host-level IRAF magtape
driver ZFIOMT is completely new. A new device configuration facility
called \fItapecap\fR was introduced. Together with the new "programmable"
magtape driver, this makes it possible to interface almost any removable
media mass storage device to the magtape subsystem. The DATAIO
applications, in particular the FITS programs, underwent minor, but
important revisions.
.PP
A full specification of the new magtape subsystem, particularly the tapecap
facility, is beyond the scope of this document. Our intention here is
merely to introduce the new facilities. A reference paper is planned, time
permitting, which will fully document the new magtape system and tapecap.
.NH 3
Basic usage
.PP
In most respects basic usage of the magtape system is unchanged from
previous releases. Many new capabilities have been added, but these are
upwards compatible with earlier releases.
.NH 4
Logical device names
.PP
Magtape devices are still referred to in IRAF applications much as they
have been in the past. Whether or not the logical device names are the
same before and after the V2.10 upgrade depends upon how the IRAF system
manager configures the tapecap file. The new magtape system is much more
flexible than previously regarding device names, but to avoid user confusion
it is recommended that the old names be supported as aliases regardless of
whatever the full device name may be.
.LP
As in earlier versions of IRAF, a simple magtape reference might be
.XS
cl> mtexamine mta
.XE
where "mta" is the device name. To examine only file 3 on the tape one
might enter
.XS
cl> mtex mta[3]
.XE
If the device is on the remote node "ursa" the command would be
.XS
cl> mtex ursa!mta[3]
.XE
If the device is a 9 track tape supporting multiple densities we might
specify the density explicitly, e.g.
.XS
cl> mtex mta1600[3]
.XE
Device names can be more complex. For example,
.XS
cl> mtex mtwd
.XE
might refer to a WangDAT drive, and
.XS
cl> mtex mtwdc
.XE
to the same drive, but with data compression enabled.
.PP
Devices can have multiple names, possibly with slightly different behavior
or characteristics. Device names such as "mta" are usually only host
specific aliases for the lower level, host independent device names.
The names "mta" and "mtb" might be aliases for the actual device
names "mthp0" and "mtxt1". This can be useful in networked systems
where IRAF and the tapecap file reside on a server node, but the user
is running IRAF on their workstation with a local tape drive attached.
In this case there may be no entry for the local drive in the installed
tapecap file, but the user can still access the local drive using the lower
level, host independent device entry (it is also possible to have a
private tapecap file as we shall see later).
.PP
To see what logical devices are known to the magtape system you can
enter the following command (the task \fIgdevices\fR was intended for
graphics devices but can be pressed into service to list a tapecap
file as well). Just because a device is listed does not mean that the
physical device actually exists on a particular host system.
.XS
cl> gdev devices='^mt' graphcap=dev$tapecap
.XE
In IRAF V2.10 it is possible to include tapecap parameters in the device
specification to do clever things, as in the following example.
.XS
cl> mtex "mta[:so=lepus:se:nb]"
.XE
This is discussed further below in the section describing the tapecap
facility.
.NH 4
Device allocation
.PP
Device allocation operates much the same in V2.10 as in earlier versions
of IRAF. The main change is that it is no longer necessary to allocate a
device in order to be able to access it. It is strongly recommended however
that you always allocate a device before accessing it in IRAF. If the
device is not allocated anyone can access the drive, e.g., changing the
tape position, and this can cause data to be lost or improperly read back.
The only reason to access the drive without allocating it is if there is
some problem with device allocation on your system.
.LP
A device is allocated with the \fIallocate\fR command, e.g.
.XS
cl> alloc mta
.XE
A device is deallocated with \fIdeallocate\fR. If the tape has already
been unmounted use the \fIrewind=no\fR option to avoid accessing the drive.
By default the tape will be rewound when it is deallocated. Deallocating
and reallocating a drive initializes the magtape system, i.e., all cached
knowledge of the status of the drive is discarded.
.NH 4
Device status
.PP
The device status can be examined at any time that the magtape device is
idle (not being actively accessed by an IRAF task) using the \fIdevstatus\fR
task.
.XS
cl> devs mtc
# Magtape unit mtc status Thu 12:54:02 04-Jun-92 user v14
file = 4
record = 1
nfiles = 0
tapeused = 405
pflags = 0
.XE
.LP
Of particular interest are the \fItapeused\fR and \fInfiles\fR fields.
\fInfiles\fR refers to the total number of files on the tape (if a file is
appended to the tape it will be file \fInfiles\fR+1). If \fInfiles\fR
is given as zero that means that the magtape system does not yet know how
many files are on the tape (it has not seen the end of tape).
.PP
\fItapeused\fR reports the amount of tape used in units of kilobytes. This
is intended to refer to the amount of tape used up to and including the end
of tape (EOT). However, the magtape system only knows about data that it
has seen, i.e. physically read or written, so whether or not \fItapeused\fR
is accurate depends upon how you have accessed the tape.
.PP
For example, if you started out with a fresh tape and appended a number of
files the number should be accurate. If you just completed a full scan of
the tape with \fImtexamine\fR the number should be accurate, since all the
data was read. If you just put on a new tape and did a scan of the FITS
headers with "rfits make-", the number may or may not be accurate, depending
upon the device and how file skipping forward was done. In most cases only
the header area of each file will have been read and \fItapeused\fR will not
reflect the full contents of the tape. If however, "rfits make-" is done
immediately after writing to a new tape, the number will be accurate, since
all the data was written before the tape was rescanned to print the FITS
headers.
.PP
Be advised that by default an explicit \fIrewind\fR will clear the \fInfiles\fR
and \fItapeused\fR fields, since by default \fIrewind\fR initializes the
magtape system. See the discussion of \fIrewind\fR below.
.PP
In summary \fItapeused\fR can be useful for monitoring how much space is
left on a tape, but you have to know what you are doing. When writing to a
new tape the number will be accurate so long as you avoid doing an explicit
\fIrewind\fR. A simple procedure which will always work when mounting a
non-empty tape and appending files to it, is to do an \fImtexamine\fR of the
tape and then append the new files. This can be time consuming for large
tapes but does provide a safe and device-independent method for getting the
maximum amount of data on a tape.
.NH 4
File positioning
.PP
File positioning when accessing magtape files in IRAF is straightforward in
the sense that you can simply specify the file number to read an existing
file, or "append" (as in wfits new-) to append a file to an existing tape.
Most tasks accept range lists to access existing files, e.g.
.XS
cl> mtexamine mta file="3,5,9-11"
.XE
It is even possible to position a tape to a specific record within a file.
Opening a tape with file zero (as in "mta[0]") disables file positioning,
allowing the tape to be positioned with host level utilities to workaround
media problems.
.PP
There can be problems with this simple scheme however, with modern tape
devices such as DAT and Exabyte which have capacities in the gigabyte
range and which may be used to store thousands of files. It is beyond the
scope of a revisions summary to go into this in detail here, but a simple
example will help illustrate the problem.
.PP
Assume we have a tape mounted on device "mtwd" containing 900 files. We
want to append image "pix" as a FITS file. The obvious thing to do is enter
the following command.
.XS
cl> wfits pix mtwd new-
.XE
This will certainly work. The only problem is that if the tape is freshly
mounted the magtape system will not know how many files there are on the
tape, and it will have to skip forward one file at a time to count the files
and determine where EOT is. In the worst case of a tape containing several
thousand files this could literally take hours.
.PP
If we know apriori the number of files on the tape, e.g., 900 in our example,
the following command would be much faster (something like 10-40 seconds on
most DAT drives, assuming a decent host level driver).
.XS
cl> wfits pix mtwd[901]
.XE
Of course, if there were actually 930 files on the tape, the last 30 files
would be overwritten.
.PP
There is a useful trick which works in some cases if we don't care exactly
how many files are on the tape (whether this works depends upon the specific
device and the host driver). Assume that we know there are several hundred
files on the tape, but less than 1000. We enter the following command to
append a file to the tape.
.XS
cl> wfits pix mtwd[1000]
.XE
If this works, after the operation the magtape system will think there are
1000 files on the tape. A subsequent "wfits new-" would be very fast
regardless of the tape position, since so long as the magtape system knows
where the end of tape is relative to the current position, it can get there
very fast.
.PP
If the trick doesn't work for your particular device or driver you will
probably get a positioning error when attempting to position to a
nonexistent file beyond the EOT.
.PP
More automated techniques for rapid positioning with very high capacity
tapes are still a matter for study. One promising technique would be to
formalize the above approach by supporting EOT-relative positioning. A tape
catalog based approach is also possible. The best approach may simply be to
not write so many small files on large tapes, by grouping images or other
data system files into a single large tape file (as with UNIX \fItar\fR).
None of these approaches are implemented in V2.10.
.NH 4
Rewind
.PP
In IRAF a magtape device is rewound with the \fIrewind\fR command, as in the
following example.
.XS
cl> rewind mta
.XE
By default this will not only rewind the tape but also initialize the
magtape system, in the sense that all cached information regarding the named
device is erased (e.g., \fInfiles\fR and \fItapeused\fR in the cached device
status). This is necessary when changing tapes without deallocating the
drive; always do an explicit rewind (or deallocate) of the device before
removing a tape or mounting a new one. Having \fIrewind\fR initialize
things is also useful if error recovery should fail following an interrupt
or program abort.
.PP
In some cases it may be useful to be able to do a rewind without erasing the
cached device status. This is done by specifying the \fIinit-\fR option on
the command line.
.NH 3
New magtape driver
.PP
The IRAF magtape driver is new for V2.10. The chief feature of the new
driver is that it is programmable, via the tapecap device entry, making it
possible to interface new devices or host drivers without having to make
any binary code changes to IRAF. All one has to do is add a device entry
in the tapecap file.
.NH 4
Software structure
.PP
The IRAF magtape system has enough layers that it may be confusing exactly
what the magtape driver is and what role it plays. A brief review of the
software structure may help clarify things.
.PP
Starting at the top we have applications, such as the DATAIO and MTLOCAL
tasks, which can access magtape files. These use the IRAF/VOS interfaces
FIO (file i/o) and MTIO (magtape i/o) to do i/o to tape devices. For the
most part i/o is done with FIO and is device independent, but a call to the
magtape system is required to open a magtape device. The tapecap file is
read by the GTY interface, which is called by MTIO. MTIO passes the tapecap
device entry as a string to ZFIOMT, the IRAF magtape device driver, when a
tape file is opened. All magtape positioning and i/o is done by ZFIOMT
driver under the control of the MTIO interface. Device allocation is done
prior to accessing the device by the CL and is handled by the allocation
routines in the ETC interface, with kernel support (this is largely
independent of the magtape system).
.PP
All of the code listed above is part of the portable IRAF system (i.e., is
OS independent and shared by all host versions of IRAF) until we get to the
ZFIOMT driver. This is in the IRAF kernel and is host system dependent. At
present the only version of ZFIOMT is the UNIX version; other versions,
e.g., for VMS will follow as IRAF is updated to V2.10 on these systems. The
UNIX version of ZFIOMT uses only generic UNIX ioctls and should compile on
most UNIX systems without change. All of the system and device dependence
has been concentrated in the tapecap file. The ioctls used to communicate
with a UNIX tape device are fairly standard, but the semantics are often
poorly defined and are certainly not standardized.
.PP
Beneath the IRAF driver are the host level magtape device drivers. A given
host system may have more than one of these, typically one for each class of
magtape device. Some systems, notably Sun with their ST (SCSI tape) driver,
try to control more than one type of device with a single host driver. The
host driver may come with the OS or may be supplied by a third party vendor.
.PP
Beneath the host driver is the actual tape device. Often these days this is
a SCSI tape device such as a DAT or Exabyte. These devices are intelligent
peripherals; control of the physical tape hardware resides in the tape
unit. There is a small computer in each tape drive which communicates with
the host computer via the SCSI interface, passing commands and data back and
forth. The drive will buffer 256K to 512K of data passed in bursts over the
SCSI bus, and then copied to or from the physical media at a much slower
rate. These drives emulate variable size records by blocking and deblocking
within the drive unit, and writing fixed size blocks to the media. Features
such as error correction and data compression are also handled within the
drive.
.PP
Although we usually speak of tape devices, the "magtape" device does not
have to be a tape device at all. The IRAF magtape system can also make use
of, e.g., a floppy disk, or anything that looks like a raw disk partition.
The problem with the latter devices is that they usually don't support
files and file positioning, hence can only be used to store one "file".
.NH 4
Driver features
.PP
A detailed description of the magtape driver is beyond the scope of this
document. Briefly, the driver supports two main classes of devices, variable
record size devices and fixed block devices. All file positioning is handled
by the driver, and while the driver has the device open it is responsible for
keeping track of the device position (the saved device position is passed
in at open time and saved by the high level code at close time). A couple of
dozen tapecap parameters are defined which describe the characteristics of
each device, such as whether it supports variable records, the maximum record
size, whether it can backspace, and so on. A socket or file based status
logging feature is provided which allows detailed monitoring of the tape
status during execution (see below).
.PP
In the simplest case the new magtape system, coupled with the UNIX version
of the magtape driver, will emulate simple UNIX commands such as \fItar\fR
and \fImt\fR insofar as the requests made to the host system and magtape
device are concerned. That is, if one writes a series of files the only
system requests made for each file will be open, write, and close. When
reading a series of files in sequence the only requests made will be open,
read, and close. Providing no file positioning is attempted it is possible
to get by with no file positioning requests other than rewind. The driver
provides extensive facilities for file positioning, using tapecap parameters
to work around any shortcomings of the host system or device, but in case
of trouble it is possible to operate with only open, close, read, and write
requests, which should work for any device (unless it is truly broken).
.NH 3
Tapecap
.PP
The tapecap file, or magtape device capabilities file, defines the magtape
devices known to the system and how to access these devices. While large
portions of this file depend only upon the host operating system and device
type and hence are fairly site independent, it will typically be necessary
to customize the tapecap file to configure the IRAF magtape system for a
site. In normal use the tapecap file is invisible to the user, but users
with special problems may wish to learn more about tapecap to gain more
control over the behavior of the magtape system.
.NH 4
Using tapecap
.PP
The standard tapecap file is the file \f(CWdev$tapecap\fR. A system
environment variable \f(CWtapecap\fR is defined which by default points to
this file.
.PP
Users can customize or manipulate tapecap entries in either of two ways.
The user can have their own private copy of the tapecap file (much as is
currently done with the termcap and graphcap files), by resetting the
value of the \f(CWtapecap\fR environment variable to point to their local
copy of the file. For example,
.XS
cl> reset tapecap = home$tapecap
.XE
This may be necessary to customize a device entry, or add support for a
local device not supported by the system wide tapecap file.
.PP
It is also possible to modify a tapecap device entry "on the fly", by
overriding the values of specific tapecap parameters on the command line
when the device is accessed. For example,
.XS
cl> mtex "mta[:so=/dev/tty]"
.XE
would override the default value of the tapecap parameter "so" for device
mta (in this case enabling status output logging and directing this output
to the user terminal).
.PP
Specifying tapecap parameters on the command line is useful for
experimentation but rapidly becomes tiresome if many commands are entered.
In this case it becomes simpler to redefine \f(CWtapecap\fR to include
the desired tapecap parameter overrides.
.XS
cl> reset tapecap = ":so=/dev/tty"
.XE
As we see, the \f(CWtapecap\fR environment variable can be used to either
specify the tapecap file name, or globally override specific tapecap
parameters (all device entries are affected). The full form of the value
string for \f(CWtapecap\fR is
.XS
cl> reset tapecap = \fR[\fP\fItapecap-file\fP\fR] [\fP`:' \fIcapabilities-list\fP\fR]\fP
.XE
Any number of colon-delimited tapecap capabilities or parameters may be
given.
.PP
It is beyond the scope of this document to detail all the tapecap parameters
here. A reference paper for the magtape system is planned. For the
present, there is a summary of the tapecap parameters in the ZFIOMT driver
source file, \f(CWos$zfiomt.c\fR. For examples of actual usage refer to the
tapecap file in the distributed system.
.NH 4
Configuring tapecap
.PP
The tapecap file uses the standard "termcap" file format, originally developed
for BSD UNIX and adopted long ago for IRAF. Any UNIX system will probably
have a manual page defining the termcap file format, if not this can be
obtained from the IRAF group.
.PP
The distributed tapecap file is divided into three sections: the host machine
specific device aliases (names like "mta" etc.), the site logical devices,
and the generic device entries. To customize the tapecap file for a site
you modify the first and second sections. To configure the tapecap file for
a particular host machine you uncomment the entries for that host in the
first section of the file. Sites which don't have a large network of hosts
may prefer to combine the first two sections to simplify things. Site
specific changes should never be made to the bottom, or generic, part of
the tapecap file, as you will want to update this portion of the file when
new versions of IRAF are released.
.PP
Don't be intimidated by the apparent complexity of some of the tapecap device
entries. In most cases the generic device entry will already exist for the
device you need to interface, and all you need to do is add a site entry
which references the generic entry. In some cases the generic entry itself
may be sufficient (for example, in the distributed SunOS version of tapecap,
logical device "mtxb0" would provide access to Exabyte unit 0 interfaced
with the Sun ST driver, "mtxb1" would be the same but unit 1, "mthp0" the
HP 9 track tape on unit 0, and so on).
.PP
For example to interface Exabyte unit 2, using the Sun ST driver, as local
device "mta", the following entry would suffice.
.XS
mta| :tc=mtst2-exb:
.XE
If the generic device entry provided doesn't quite work and minor
modifications are needed, these should be made to the \fIlocal\fR entry and
not the standard generic entry. This is easily done with termcap parameter
redefinitions. For example, in SunOS 4.1.2 (but not earlier versions of
SunOS) there is a bug in the Sun ST driver which necessitates rewinding the
tape after a tape scan is made to position to EOT (!). The capabilities
":se:nb" can be added to the tapecap entry for the device to workaround this
bug, as in the following example.
.XS
mta| :se:nb:tc=mtst2-exb:
.XE
The parameters mean that the device spaces past EOT in a read (se) and
cannot backspace (nb). Neither of these things is actually true, but the
effect is that the tape is rewound and spaced forward to get back to the
desired file, working around the host level driver bug. Access will be
less efficient than it should be, but the interface will work properly and
the user does not have to be concerned with the problem.
.PP
As a final example, suppose we need to write a new tapecap entry from
scratch because there is no generic entry for the device in the distributed
tapecap file. To simplify things we assume that no special tapecap
parameters are needed, i.e., that the standard UNIX defaults builtin to
the driver will work for the device. We are upgrading from an old version
of IRAF so we already have an old \f(CWdev$devices\fR file to work with.
For the purposes of our example we use an old HP 88780 1/2 tape drive entry,
but pretend that the device is something which is not already supported.
.LP
The old devices file entry was as follows.
.XS
mta nrst20 nrst4 nrst12 nrst28 rst4 rst12 rst20 rst28
mta.6250 nrst20 nrst4 nrst12 nrst28 rst4 rst12 rst20 rst28
.XE
The minimal tapecap entry required to duplicate this is the following.
.XS
mta|mta6250|HP 88780 1/2 inch tape drive:\\\\
:al=nrst4 nrst12 nrst20 nrst28 rst4 rst12 rst20 rst28:\\\\
:dv=nrst20:lk=st4:tc=9tk-6250:
.XE
Here, the "al" parameter lists the device files to be allocated, the "dv"
parameter is the device file to be used for i/o at the desired density
(6250bpi in this case), and "lk" is the root file name to be used for the
".lok", or device status file. The "tc=" picks up the standard parameters
for a 9 track 1/2 inch tape drive operating at 6250 bpi. Two device
aliases are defined, "mta" and "mta6250".
.NH 4
Supported devices
.PP
The IRAF magtape system itself should support almost any magtape device if
properly configured. What devices are actually supported at a site depends
upon the tapecap file, and in particular upon the host system (different
host systems have different tapecap files).
.TS
center;
ci ci
l l.
Device Driver
QIC-11 cartridge tape Sun st
QIC-24 cartridge tape Sun st
QIC-150 cartridge tape Sun st
Pertec compatible 1/2 inch drives Xylogics
HP 88780 1/2 inch drive Sun st
WangDAT 1300, 2000 ApUNIX
HP DAT ApUNIX
Exabyte 8200, 8500 ApUNIX, Sun st, Ciprico
DC2000 cartridge tape A/UX tc
FDHD floppy disk A/UX fd
.TE
.PP
As an example, the tapecap file distributed in the V2.10.0 release of Sun/IRAF
supported the devices listed in the table above. New devices are constantly
being added. As V2.10 IRAF propagates to the various platforms on which IRAF
is supported, similar tapecap files will be configured for those systems.
.NH 3
Status output
.PP
The new magtape driver has a facility known as status output logging which
can be used to monitor interactively lengthy tape jobs while i/o is in
progress. The status output facility can also be useful for debugging
magtape problems.
.PP
In its simplest form, the status output may be directed to a file, e.g., an
actual text file, or a terminal device. Status output is enabled by setting
the "so" option in tapecap. For example,
.XS
cl> mtex "mta[:so=/tmp/mta.out]"
.XE
would enable status output logging and direct the output text to the file
/tmp/mta.out. Likewise,
.XS
cl> mtex "mta[:so=/dev/ttyp7]"
.XE
would enable status output and direct the output to a pseudoterminal, e.g.,
an xterm window. When this form of status output logging is used one
sees the raw, driver level status messages, as in the following example.
.XS
cl> mtex "mta[:so=/dev/tty]"
open device tc2n\\\\n
devtype = Apple Tape 40SC
tapetype = DC2000
tapesize = 38500
density = na
blksize = 8192
acmode = read
file = -1
record = -1
nfiles = 0
tapeused = 0
device tc2n opened on descriptor 4\n
rewinding...
done\\\\n
position to file 1\\\\n
file = 1
record = 1
reading...\\\\n
recsize = 65536
record = 9
tapeused = 64
\fI(etc.)\fP
.XE
.LP
The UNIX version of the new magtape driver also has an option to direct
status output to a TCP/IP socket, which can be anywhere on the network.
For this option to be useful one must have a program which will listen
on the designated socket, accept the connection when the magtape driver
tries to open a connection, and then read and process the status messages
(which are still text, exactly as in the example above).
.PP
Status output to a socket is enabled by giving a host name instead of a
file name in the "so" directive:
.XS
cl> mtex "mta[3:so=lepus]"
.XE
to examine file 3, directing status messages to a socket on node "lepus".
.PP
An X11 client application called \fIxtapemon\fR has been developed to listen
on a socket, read messages from the tape driver, and provide a real-time
display of the status of the tape device. While not included in the V2.10
IRAF distribution, this utility will be available later in 1992 as part of
the X11 support package currently under development.
.NH 3
Error recovery
.PP
Considerable effort went into "bullet proofing" the new magtape system to
make it recover gracefully from ctrl/c interrupts or other program aborts.
In practice it can be very difficult to reliably catch and recover from
interrupts in a multiprocess, distributed system such as IRAF. No doubt
there are still conditions under which an interrupt will leave the magtape
system in a bad state, but in most circumstances the system should now be
able to successfully recover gracefully from an interrupt.
.PP
If it is necessary to interrupt a tape operation, it is important to
understand that the host system will not deliver the interrupt signal to the
IRAF process until any pending i/o operation or other driver request
completes. For example, in a read operation the interrupt will not be acted
upon until the read operation completes, or in a tape positioning operation
such as a rewind or file skip forward, the interrupt will not be acted upon
until the tape gets to the requested position. For a device such as a disk
you rarely notice the delay to complete a driver request, but for a magtape
device these operations will take anywhere from a few seconds to a few tens
of seconds to complete. Type ctrl/c once, and wait until the operation
completes and the system responds.
.PP
If a magtape operation is interrupted, the IRAF error recovery code will
mark the tape position as undefined (\fIdevstatus\fR will report a file
number of -1). This will automatically cause a rewind and space forward
the next time the tape is accessed. The rewind is necessary to return the
tape to a known position.
.NH 3
Device optimization
.PP
In addition to making it possible to characterize the behavior of a magtape
device to permit the device to be accessed reliably, the tapecap facility is
used to optimize i/o to the device. The parameter "fb" may be specified for
a device to define the "optimum" FITS blocking factor for the device.
Unless the user explicitly specifies the blocking factor, this is the value
that the V2.10 \fIwfits\fR task will use when writing FITS files to a tape.
Note that for cartridge devices a FITS blocking factor of 22 is used for
some devices; at first this may seem non-standard FITS, but it is perfectly
legal, since for a fixed block size device the FITS blocking factor serves
only to determine how the program buffers the data (for a fixed block device
you get exactly the same tape regardless of the logical blocking factor).
For non-FITS device access the magtape system defines an optimum record size
which is used to do things like buffer data for cartridge tape devices to
allow streaming.
.PP
Some devices, i.e., some DAT and Exabyte devices, are slow to switch between
read and skip mode, and for files smaller than a certain size, when skipping
forward to the next file, it will be faster to read the remainder of the
file than to close the file and do a file skip forward. The "fe" parameter
is provided for such devices, to define the "file equivalent" in kilobytes
of file data, which can be read in the time that it takes to complete a
short file positioning operation and resume reading. Use of this device
parameter in a tape scanning application such as \fIrfits\fR can make a
factor of 5-10 difference in the time required to execute a tape scan of
a tape containing many small files.
.PP
On most cartridge tape devices backspacing, if permitted at all, is very
slow. On such devices it may be best to set the "nf" parameter to tell
the driver to rewind and space forward when backspacing to a file.
.NH 3
MTIO interface changes
.PP
A number of new routines were added to the MTIO (magtape i/o) programming
interface. These are documented in the summary of programming environment
revisions given below. Existing magtape applications may benefit from
being modified to make use of these new routines.
.NH 2
Graphics and Imaging Subsystem Enhancements
.NH 3
New graphics applications
.PP
New tasks for histogram plotting, radial profile plotting, and producing
lists of the available graphics devices have been added to the PLOT
package. All of the tasks in this package were revised to add support for
world coordinates. A related task for drawing world coordinate grid
overlays on images or plots was added to the IMAGES.TV package. See the
appropriate sections of \fIIRAF and NOAO package revisions\fP below for
further information on these changes.
.NH 3
Graphics system changes
.NH 4
Encapsulated postscript SGI kernel
.PP
A new encapsulated postscript SGI kernel has been added. Graphics output
may be directed to any of the logical graphics devices \fIeps\fR, \fIepsl\fR,
\fIepshalf\fR, etc. to render a plot in encapsulated postscript, e.g., for
inclusion as a figure in a document. For example,
.XS
cl> prow dev$pix 101 dev=eps; gflush
.XE
will leave a ".eps" file containing the plot in the current directory.
The command "gdev dev=eps" will produce a list of the available EPS
logical graphics devices.
.NH 4
Graphics output to the default printer
.PP
Graphics output (SGI postscript) can now be directed to the UNIX default
printer device by directing output to any of the logical devices "lpr",
"lp", or "lw".
.XS
cl> prow dev$pix 101 dev=lpr
.XE
.PP
Output will be sent to the default device for the UNIX
\fIlpr\fR command (set by defining "PRINTER" in your UNIX environment).
This makes it possible to make immediate use the distributed IRAF graphcap
without having to add entries for specific local devices (although you
may still wish to do so).
.NH 4
Tick spacing algorithm improved
.PP
The algorithm used to draw the minor ticks on IRAF plots was replaced by an
improved algorithm contributed by the STScI STSDAS group (Jonathan
Eisenhamer in particular). This was derived from similar code in Mongo.
.NH 4
Graphics metacode buffer
.PP
The default maximum size of the graphics metacode buffer in the CL, used to
buffer graphics output for cursor mode interaction, was increased from 64K
to 128K graphics metacode words (256Kb). The \f(CWcmbuflen\fR environment
variable may be used to change this value.
.NH 4
IMTOOL changes
.PP
The \fIimtool\fR display server (SunView) was enhanced to add additional
builtin color tables, support for user color tables, and setup panel control
over the screen capture facilities. A version supporting encapsulated
postscript output is in testing. This will be the final version of the
SunView based version of imtool (the new display servers are all X
window system based).
.NH 4
IMTOOLRC changes
.PP
The \f(CWimtoolrc\fR file, used by display servers such as \fIimtool\fR and
\fIsaoimage\fR to define the available image frame buffer configurations,
has been relocated to the DEV directory to make it easier for local site
managers to customize. The IRAF install script now uses a link to point to
this file, rather than copying it to /usr/local/lib. The maximum number of
frame buffer configurations was increased from 64 to 128.
.NH 4
X11 support
.PP
The released version of V2.10 does not contain any changes insofar as X11
support is concerned. Since our X11 support code is host level stuff, with
minimal ties to IRAF per se, it is being developed independently of the V2.10
release and will be distributed and installed as a separate product.
.NH 2
Image Structures
.NH 3
Image I/O (IMIO)
.PP
The image i/o interface (IMIO) is that part of the IRAF system responsible
for imagefile access and management. The changes to IMIO for V2.10 included
the following.
.NH 4
Null images
.PP
Null images are now supported for image output, much like the null files
long supported by the file i/o system. For example,
.XS
cl> imcopy pix dev$null
.XE
would copy the image "pix" to the null image. This exercises the software
but produces no actual output image. Unlike null files, null images do not
work for input since images have some minimal required structure, whereas
files can be zero length.
.NH 4
Preallocating pixel file storage
.PP
In the UNIX versions of IRAF, when a new image is created storage is not
physically allocated for the output image until the data is written. This
is because most UNIX systems do not provide any means to preallocate file
system storage. The UNIX/IRAF file creation primitive \fIzfaloc\fR, used by
IMIO to create pixel files, now provides an option which can be used to
force storage to be physically allocated at file creation time. This feature
is enabled by defining the environment variable \f(CWZFALOC\fR in the UNIX
environment. For example,
.XS
% setenv ZFALOC
.XE
can be entered before starting IRAF to cause space for all pixel files to
be preallocated as images are created. If it is not desired to preallocate
all image storage (there is a significant runtime overhead associated with
preallocating large images) then a value string can be given to specify
which types of images to preallocate storage for. For example,
.XS
% setenv ZFALOC /scr5
.XE
would preallocate only those pixel files stored on the /scr5 disk, and
.XS
% setenv ZFALOC "/scr5,zero"
.XE
would preallocate only images on /scr5, or images containing the substring
"zero" in the image name. In general, the string value of \f(CWZFALOC\fR
may be the null string, which matches all images, or a list of simple
pattern substrings identifying the images to be matched.
.PP
In most cases the default behavior of the system, which is to not physically
allocate storage until the data is written, is preferable since it is more
efficient. The preallocation option is provided for users who, for example
might have an application which spends a lot of time computing an image,
and they want to ensure that the disk space will be available to finish
writing out the image.
.NH 4
Image templates now sorted
.PP
As mentioned earlier in the \fISystem Management\fR section, UNIX/IRAF now
sorts UNIX directories. One result of this is that the sections of image
templates which are expanded via pattern matching against a directory will
now be sorted, or at least logically ordered (the final output list will not
necessarily be fully sorted if string substitution is being performed - this
is the reason the output list itself is not sorted).
.NH 4
The dev$pix test image
.PP
Minor changes were made to clean up the image header of the standard test
image \f(CWdev$pix\fR. A second test image \f(CWdev$wpix\fR has been
added. This is the same image, but with a different header containing a
test world coordinate system (actually the image is just a second image
header pointing to the \f(CWdev$pix\fR pixel file, now shared by both
images).
.NH 3
Image kernels (IKI)
.PP
The IMIO image kernels are the data format specific part of the IRAF image
i/o subsystem. Each kernel supports a different image format. Existing
disk image formats range from the conventional image raster formats (OIF
and STF) to the photon image format (QPF and QPOE) and the pixel mask
image format (PLF and PMIO/PLIO). There also exist special image kernels
which allow IMIO to be used to access non-disk storage devices such as
image display frame buffers.
.NH 4
New PLF image kernel
.PP
A new image kernel, the PLF image kernel, has been added which allows IRAF
PMIO/PLIO pixel masks to be stored as images. This kernel first appeared
as a patch to version 2.9 IRAF but was actually developed within V2.10.
.PP
Pixel mask images may be created, deleted, read, written, etc. like other
IRAF images, but the image is stored in a special compressed format designed
specially for image masks. An image mask is an N-dimensional raster-like
object wherein typically there are regions of constant value but arbitrary
shape. Masks are used by applications involving image decomposition. The
image is decomposed into regions of different types, the type of region
being very dependent upon the type of image analysis being performed. A
special type of mask image is the bad pixel mask, used to flag the bad
pixels in an image. Other applications use masks for data quality, to
identify the region or regions to be used for analysis, and so on.
.PP
A PMIO image mask is a special case of a PLIO pixel list. Masks can exist
and be accessed independently of the image i/o system, but the PLF image
kernel allows a mask to be stored and accessed as an IRAF image. Any IRAF
application which operates upon images can operated upon a mask image.
For example, the \fIimcalc\fR (image calculator) program in the SAO XRAY
package can be used to combine images and masks, or compute new masks
by evaluating an algebraic expression over an image.
.PP
Mask images have the reserved image extension ".pl". Some of the features
of mask images are illustrated by the following example.
.XS
cl> imcopy dev$pix pix.pl
dev$pix -> pix.pl
cl> imstat dev$pix,pix.pl
# IMAGE NPIX MEAN STDDEV MIN MAX
dev$pix 262144 108.3 131.3 -1. 19936.
pix.pl 262144 108.3 131.3 6. 19936.
.XE
This is a sort of worst case test of the mask encoding algorithm, since
our test image is not a mask but a noisy image (and hence not very
compressible). Note that masks must be positive valued, hence the MIN
value is different for the two images. Storing \f(CWdev$pix\fR as a
mask does not result in any significant compression, but for a real
mask very high compression factors are possible. The compression algorithm
used in PLIO is simple and fast, combining 2D run length encoding and a
differencing technique in a data structure allowing random access of
multidimensional masks (masks are not limited to one or two dimensions).
.PP
For further information on pixel lists and pixel masks, see the document
\f(CWplio$PLIO.hlp\fR in the online system. This is also available as
\f(CWplio.txt.Z\fR in the IRAF network archive.
.NH 4
OIF image kernel changes
.PP
The OIF image kernel is the kernel for the old IRAF image format - this is
still the default IRAF image format. Revisions to the OIF kernel for V2.10
included the following items.
.RS
.IP \(bu
A valid image header is now written even if an application which writes to
a new image is aborted. Previously, the pixel file would be written but
the image header would be zero length until the image was closed. If an
image creation task aborts the image will likely be incomplete in some way,
e.g., part of the pixels may not have been written to, or the header may
be missing application specific keywords. By valid image header we mean
that the header will be valid to IMIO, allowing the image to be accessed
to try to recover the data, or to delete the image.
.IP \(bu
The image header file of a new image is now written to and closed at image
create time, then reopened at image close time to update the header. This
frees one file descriptor, an important consideration for applications
which for some reason need to write to dozens of output images
simultaneously.
.IP \(bu
The OIF image kernel uses file protection to prevent inadvertent deletion of
the image header file. In UNIX/IRAF systems file delete protection is
simulated by creating a ".." prefixed hard link to the file. This could
cause problems with images if the user deleted the image header file outside
of IRAF, leaving the ".." prefixed link to the file behind. A subsequent
image create operation with the same image name would fail due to the
existence of the hidden ".." prefixed file. It is unlikely that such a
file (with a ".." prefix and a ".imh" extension) could ever be anything but
an old IRAF image header file, so the system will now silently replace such
files when creating a new image.
.RE
.PP
A couple of related system changes were made which, while not implemented in
the OIF kernel, do involve the OIF or ".imh" image format. The default
template \f(CWlogin.cl\fR now defines the environment variable
\f(CWimtype\fR and sets it to "imh". The environment variable
\f(CWmin_lenuserarea\fR is also defined now at login time, with a default
value of 20000, allowing image headers with up to about 250 header
parameters.
.NH 4
STF image kernel changes
.PP
The STF image kernel is the kernel for the online HST (Hubble Space Telescope)
image format. This format allows multiple images to be grouped together in
a single "group format" image. There is a common image header stored in a
FITS-like format, as well as a small fixed format binary header associated
with each image in the group.
.RS
.IP \(bu
A check was added for a group index out of range. This yields a more
meaningful error message about no such group, rather than having IMIO
complain about a reference out of bounds on the pixel file.
.IP \(bu
Support was added for non-group STF images (GROUPS=F in the header).
At first glance a non-group group format image might seem a little silly,
but it turns out that a non-group STF image with a zero length group
parameter block is very close to "FITS on disk", since the header is
FITS-like and the image matrix is simple. It is still not true FITS
since the header and pixels are stored in separate files and the pixels
are not encoded in a machine independent form, but on UNIX hosts which
are IEEE standard and not byte swapped, it comes close enough to be useful
for communicating with external applications in some cases.
.RE
.PP
A true FITS image kernel is planned for IRAF. This will probably appear
in one of the V2.10 patches, sometime during 1992.
.NH 4
QPF image kernel changes
.PP
The QPF image kernel is the interface between the QPOE (position ordered
event file) interface and IMIO, allowing QPOE event files to be accessed as
images by general IRAF applications. Photon "images" are unique in that the
image raster is generated at runtime as the image is accessed, optionally
passing the photon list through event attribute and spatial filters, and
sampling the photons to produce a raster image. For example,
.XS
cl> imcopy "snr[time=@snr.tf,bl=4]" snr.imh
.XE
would filter the event list stored in the file "snr.qp" by the time filter
stored in file "snr.tf", sample the image space blocking by a factor of 4,
and store the resultant image raster in the OIF image file "snr.imh".
.XS
cl> display "snr[time=@snr.tf,bl=4]" 1
.XE
would display the same image raster without creating an intermediate disk
image.
.LP
The changes to the QPF interface for V2.10 included the following.
.RS
.IP \(bu
A bug was fixed which would prevent very long filter expressions from being
correctly recorded in the IMIO image header. The current version of IMIO
stores applications header parameters in FITS format, hence multiple FITS
cards are required to store long filter expressions. The bug would cause
only one such card to be output.
.IP \(bu
A new facility was added which allows general expressions to be computed for
the input event list and stored as keywords in the output image header. The
header of the input QPOE file can contain one or more parameters named
\fIdefattr1\fR, \fIdefattr2\fR, and so on. If present, the string value of
each such parameter should be a statement such as
.XS
exptime = integral time:d
.XE
which will cause a keyword named "exptime" to be added to the output image
header, the scalar value of the keyword being the value of the expression on
the right. Currently, only the integral function is provided. This
computes the included area of a range list field of the event attribute
expression, such as a time filter. In the example, "time" is the name of
the event attribute to be integrated, and the ":d" means use a range list of
type double for the computation. The data types currently supported are
integer, real and double.
.RE
.PP
Other minor changes to QPF included improvements to the error recovery,
and other changes to support very large filters.
.NH 3
World coordinate system support (MWCS)
.PP
MWCS is the IRAF world coordinate system package, one of the major new
system interfaces developed for the new image structures project.
A full description of the MWCS interface is given in the file
\f(CWmwcs$MWCS.hlp\fR in the online system, and in the file \f(CWmwcs.txt.Z\fR
in the IRAF network archive.
.NH 4
Applications support
.PP
MWCS was first released in V2.9 IRAF and at the time the interface was new
and few applications were yet using it. In V2.10 IRAF most (but not all)
applications which deal with coordinates now use MWCS. These include all of
the system plotting tasks, and the spectral reduction packages. Details of
the MWCS support added to the system and science applications in V2.10 are
given in the \fIIRAF and NOAO package revisions\fR section of this revisions
summary.
.NH 4
New function drivers
.PP
Function drivers for the \fIarc\fR, \fIsin\fR, and \fIgls\fR nonlinear sky
projections were added, as well as a special function driver for the
\fImultispec\fR image format. The latter allows general programs which
don't know anything about spectra to access and display spectra in world
coordinates, e.g., for plotting.
.NH 4
WCS attributes
.PP
The maximum number of "attributes" per WCS was increased from 64 to 256,
mainly to support the multispec function driver, which makes heavy use of
attributes. A limit on the size of a single attribute value string was
removed, allowing arbitrarily large attribute values to be stored.
.NH 4
Axis mapping
.PP
Axis mapping is now fully implemented. Axis mapping is used when, for
example, you extract a 2 dimensional section from a 3 dimensional image
and write the result to a new image. Axis mapping allows the 2 dimensions
of the new image to be mapped backed into the original 3 dimensional WCS,
making it possible to get the full physical coordinates (which are 3
dimensional) for any point in the extracted image. A new header keyword
\f(CWWAXMAP\fInn\fR was added to store the axis map in image headers.
.NH 4
MWCS save format
.PP
The newer IRAF image formats such as QPOE are capable of storing arbitrarily
complex objects such as a MWCS in an image header keyword. In the case of a
stored MWCS object, the MWCS interface is responsible for encoding the
object in its external storage format, and restoring it to a MWCS descriptor
when the MWCS is accessed. The code which does this was revised to add a
new version number for the stored V2.10 MWCS, to make it possible to
differentiate between the MWCS save formats used in V2.9 and V2.10 and allow
recovery of MWCS objects from data files written under V2.9.
.NH 4
Bug fixes
.PP
Since MWCS is a new interface and V2.10 saw its first real use in
applications, a number of interface bugs were discovered and fixed. Most of
the bugs turned out to be in the part of MWCS which converts between the
internal MWCS WCS representation, and the FITS WCS representation, used for
those image formats that still use FITS-like headers. Bug fixes included a
problem with the treatment of CROTA2, a problem with the FITS CD matrix, an
axis mapping problem that caused "dimension mismatch" errors, and a problem
with support for the old-style CDELT/CROTA which could result in a singular
matrix during WCS inversion when compiling a transformation.
.NH 3
Event files (QPOE)
.PP
The QPOE interface is the interface responsible for creating and accessing
\fIevent files\fR, the main data format produced by event counting
detectors. We summarize here the main enhancements to QPOE made during the
preparation of V2.10. Some of these features appeared earlier in the
patches made to V2.9 IRAF but these revisions have never been formally
documented so we summarize both the old and new revisions here. See also
the discussion of the QPF image kernel given earlier.
.NH 4
Blocking factors
.PP
The builtin default blocking factor, when sampling the event list to make
an image raster, is one. This may be changed on a per-datafile basis by
defining the parameter \fIdefblock\fR in the QPOE file header.
.NH 4
Parameter defaults
.PP
Since parameters such as the blocking factor can be set at a number of levels,
a parameter defaulting scheme was defined to determine the precedence of
parameter overrides. The lowest level of precedence is the builtin default.
Next is any datafile specific value such as \fIdefblock\fR. A value such
as \fIblockfactor\fR set in the QPDEFS file will override the datafile
default value if any. Specifying the parameter value in a runtime filter
expression or \fIqpseti\fR call is the highest order of precedence and will
override any other setting.
.PP
Another way to think of this is the more recently the parameter was set, the
higher the precedence. The oldest value is the default builtin to the
code. Next is the datafile value, usually set when the datafile was
created. Next is the QPDEFS macro file, usually set by the user or for a
site. Last (highest precedence) is the value set by the user when the data
is accessed.
.NH 4
Referencing the current datafile in macros
.PP
A special symbol \f(CW$DFN\fR is now recognized during macro expansion and
if present is replaced by the filename of the current QPOE file. This allows
macros to be written which automatically perform some operation involving
the datafile to which they applied, e.g., computing an attribute list from
aspect or data quality information stored in the datafile header.
.NH 4
Bitmask expressions
.PP
Bitmask expressions may now be negated, e.g., "%3B" is the mask 03 octal,
"!%3B" or "!(%3B)" is the complement of 03 octal.
.NH 4
Large time filters
.PP
A number of changes and bug fixes were made to QPOE for V2.10 to support
large time filters. These are lists of "good time" intervals used to filter
the event list. These large time filters may contain several hundred
double precision time intervals spanning the exposure period. Often a
large time filter is combined with a complex spatial filter (PLIO mask) to
filter an event list consisting of from several hundred thousand to several
million events. QPOE can handle this efficiently regardless of whether
the data is temporarily or spatially sorted and regardless of the complexity
of the temporal or spatial filters.
.PP
A number of minor bugs were fixed caused by the large filter expressions
overflowing various buffers. The default sizes of the program and data
buffers used to compile filter expressions were increased to allow all but
very large filters to be compiled without having to change the defaults.
If the buffers overflow more space can be allocated by setting the
\f(CWprogbuflen\fR and \f(CWdatabuflen\fR parameters in QPDEFS (these
buffers are not dynamically resized at runtime for efficiency reasons).
During testing with large time filters it was discovered that a routine
used to test floating point equality was being used inefficiently, and
compilation of large time filters was taking a surprisingly long time.
A change was made which reduced the time to compile large filters by a
factor of 10 to 15.
.NH 4
Default filters
.PP
QPOE now fully supports default event attribute and spatial filtering of
data at runtime. The idea is that the full data set (all events) is stored
in the QPOE file, along with default event attribute and spatial filters.
When the data is accessed these filters are, by default, automatically
applied. Any user specified event attribute or spatial filters are "added"
to the builtin default filters to produce the combined filter used when the
event list is accessed. The point of all this is to make it easy for the
user to modify or replace the default filters and "reprocess" the raw event
list. In effect the raw and processed event list are available in the same
file.
.PP
The default filter and mask, if any, are stored in the datafile header
parameters \f(CWdeffilt\fR and \f(CWdefmask\fR. If the datafile contains
multiple event lists a default filter or mask may be associated with
each list by adding a period and the name of the event list parameter,
e.g., "deffilt.foo" would be the default filter for the event list "foo".
.PP
By default, if a default filter or mask exists for an event list it is
automatically applied when the event list is accessed.
Use of the default filter or mask can be disabled in QPDEFS with either
of the following statements:
.XS
set nodeffilt
set nodefmask
.XE
The default filter and mask can also be disabled in a filter expression
by adding a "!" before the expression, as in the following example.
.XS
display "snr[!time=@times.lst,pha=(3,8:11)]"
.XE
There are actually several variants on the "=" assignment operator used
in filter expressions such as that above. The operator "=" is equivalent
to "+=", meaning the expression term on the right adds to any existing
filter specified for the event attribute on the left. The operator ":="
on the other hand, means \fIreplace\fR any existing filter by the new
filter expression.
.NH 4
Alternate coordinate systems
.PP
The event structure used to represent each event in an event list may
contain multiple coordinate systems if desired, for example, detector and
sky coordinates. One coordinate system should be defined as the default
when the event list is created, and if the event list is to be indexed
it must be sorted using the coordinate system specified as the default.
Any coordinate system may be used when the data is accessed however;
this can result in quite different views of the same data set. For example,
.XS
cl> display snr.qp 1
.XE
would display the QPOE file "snr.qp" in display frame 1, using all defaults
for the event list, blocking factor, filter, mask, and so on. The default
event coordinate system would probably be sky coordinates. To display the
same event list in detector coordinates, one could enter the following
command.
.XS
cl> display "snr.qp[key=(dx,dy)]" 1
.XE
This assumes that the event structure fields "dx" and "dy" are defined
somewhere, either in the datafile header or in QPDEFS (otherwise the actual
field datatype-offset codes must be given).
.PP
Currently if the QPOE datafile has a WCS associated with it this WCS can
only refer to one coordinate system, normally the default event coordinate
system. Additional WCS can be stored in the QPOE file, either in the stored
MWCS object or as separate MWCS objects, but at present there is no
mechanism for selecting which will be used (if the parameter \f(CWqpwcs\fR
exists in the QPOE file header, this is assumed to be a stored MWCS object
and this is the WCS which will be used).
.NH 2
System Specific Changes
.NH 3
Sun/IRAF
.PP
Since V2.10 has only just been completed and at this stage has only been
released on Sun platforms, there are few system specific revisions to report.
For SunOS there were several system specific revisions worth noting here.
.RS
.IP \(bu
The HSI binaries for the sparc architecture are now statically linked.
This makes them considerably larger, but avoids problems with SunOS
complaining about shared library version mismatches (note that we refer
here to to Sun shared libraries - this is not a problem with the IRAF
shared library facility since we control the version numbers).
.IP \(bu
The HSI binaries for the Motorola architectures (f68881 and ffpa) are
\fInot\fR statically linked since they cannot be without running into
linker problems warning about f68881_used etc. To avoid or at least
minimize warnings about SunOS shared library versions the system was
linked on 4.1.1 instead of 4.1.2. SunOS 4.0.3 versions of the Motorola
HSI binaries are also available upon request.
.IP \(bu
The system as distributed was linked with the name server library,
\f(CW-lresolv\fR. This means that if the local host is configured to
use the name server, IRAF will be able to access almost any host on the
Internet without an entry in the \f(CW/etc/hosts\fR file on the local host.
.RE
.PP
Additional system specific changes will be reported in the documentation
distributed with each release, as V2.10 is moved to the various platforms
for which IRAF is supported.
.bp
.NH
IRAF and NOAO package revisions
.PP
The revisions for the various packages in the IRAF core system and in the
NOAO packages are summarized below. There have been many changes with this
release. Users are encouraged to refer to the help pages, user's guides
provided with some packages, revisions notes, and more recent issues of IRAF
Newsletters for more details. Comprehensive notes on systems and
applications modifications are in the files \f(CWpkgnotes.v210.Z\fP and
\f(CWsysnotes.v210.Z\fP in the directory \f(CWiraf/v210\fP in the network
archive. This summary can be read online by typing \fInews\fP. Revisions
notes for the various packages can also be accessed online as in the
following example.
.XS
cl> phelp dataio.revisions opt=sys
.XE
.PP
One of the system changes that affects many tasks in the IMAGES, PLOT, and
LISTS packages as well as most tasks in the spectroscopic packages in NOAO
is the full implementation of the world coordinate system (WCS), introduced
in V2.9 but not fully integrated into the IRAF and NOAO tasks at that time.
There are currently three classes of coordinate systems: the logical system
is in pixel units of the current image section; the physical system is in
pixel units of the parent image (for a WCS associated with a raster image);
the world system can be any system defined by the application, e.g. RA and
DEC or wavelength. In general, this should be transparent to the user since
most defaults have been chosen carefully so that tasks perform the same as
in V2.9. The NOAO spectroscopic tasks also use the WCS extensively, but
again, this should be transparent to the user, although it can cause some
problems with backward compatibility. Users will notice the biggest
difference in the image headers with additional keywords added by the
interface. Two tasks in the PROTO package may help the interested user
understand more about the WCS - see \fIwcsedit\fP and \fIwcsreset\fP.
Technical notes on the WCS are available in a paper in the
\f(CWiraf$sys/mwcs\fP directory. Type the following to read more about the
MWCS interface.
.XS
cl> phelp mwcs$MWCS.hlp fi+
.XE
.NH 2
Changes to the IRAF system packages
.NH 3
DATAIO package modifications
.IP \(bu
The output defaults for \fIwfits\fP have been modified. If the pixel type on
disk is real or double precision the output will be IEEE format (FITS
bitpix = -32 or -64, respectively). If the pixel type on disk is short
integer then the output will be integer format (bitpix = 16) as before.
These defaults can of course be changed by modifying the parameters for
\fIwfits\fP.
.IP \(bu
The \fIwfits\fP "blocking_factor" parameter can accept values up to and
including 10 for variable blocked devices, i.e. 1/2" tape drives, Exabytes,
and DATs. If the "blocking_factor" parameter is set to "0", as in the
default, the value is read from the "fb" parameter in the tapecap file
(usually 10 for variable blocked devices). For fixed blocked devices such
as cartridge tape drives the default value for the "fb" parameter in the
tapecap file is 22 (used to determine a buffer size) and the block size
of the device is given by the "bs" parameter.
.IP \(bu
All tasks were modified to accept tapecap parameters as part of the magtape
file name syntax. Tapecap
parameters can now be appended to the magtape file name to add to or
override values in the tapecap file. For example,
\f(CW"mta6250[:se]"\fP is a valid magtape file name (the "" are important
when tapecap parameters are specified at execution time). See the file
\f(CWos$zfiomt.c\fP for more details about the tapecap parameters.
.IP \(bu
The \fIrfits\fP task has been modified to permit a short last record, i.e. a last
record that has not been padded out to 2880 bytes. No warning messages
are issued.
.IP \(bu
\fIrfits\fP was modified to map ASCII control characters in the header to blanks.
.IP \(bu
The sequence number appended to disk file names by \fIrfits\fP and \fIwfits\fP was
modified to 4 digits, i.e. 0001 - 9999.
.NH 3
IMAGES package modifications
.IP \(bu
WCS (world coordinate system) support was added to all tasks in the IMAGES
package that could introduce a coordinate transformation. Some tasks had
already been modified for the V2.9 release. These tasks
(\fIblkavg\fP, \fIblkrep\fP, \fIgeotran\fP, \fIimcopy\fP, \fIimlintran\fP, \fIimshift\fP, \fIimslice\fP, \fIimstack\fP,
\fIimtranspose\fP, \fImagnify\fP, \fIregister\fP, \fIrotate\fP, and \fIshiftlines\fP), upon execution,
will update the image header to reflect any transformation.
.IP \(bu
The \fIlistpixels\fP task was modified to list the pixel coordinates in either
logical, physical, or world coordinates. A format parameter was added to
the task for formatting the output pixel coordinates taking precedence over
the WCS in the image header, if used.
.IP \(bu
A new \fIimcombine\fP task was added to the package. This new task supports
image masks and offsets, and has an assortment of new combining algorithms.
See the help pages for complete details on this powerful new task.
.IP \(bu
The \fIimhistogram\fP task has a new "binwidth" parameter for setting histogram
resolution in intensity units.
.IP \(bu
The default values for the parameters "xscale" and "yscale" in the
\fIregister\fP and \fIgeotran\fP tasks were changed from INDEF to 1.0, to preserve the
scale of the reference image.
.NH 3
IMAGES.TV package reorganization and modifications
.IP \(bu
The TV package has been reorganized. The IIS dependent tasks have been moved
into a subpackage, TV.IIS. The \fIimedit\fP, \fIimexamine\fP, and \fItvmark\fP tasks that were
previously in PROTO have been moved to TV.
.IP \(bu
A new task \fIwcslab\fP developed at STScI by Jonathan Eisenhamer was added
to the package. \fIwcslab\fP overlays a labeled world coordinate grid on an
image using WCS information stored in the header of the image or in
parameters of the task.
.IP \(bu
\fIimexamine\fP was modified to use WCS information in axis labels and
coordinate readback, if selected by the user. Two new parameters, "xformat"
and "yformat", were added to specify the format of the WCS if it is not
present in the header of the image.
.IP \(bu
A new option was added to \fIimexamine\fP to allow for fitting 1D gaussians to
lines or columns.
.IP \(bu
\fItvmark\fP had two cursor key changes. The "d" keystroke command that marked
an object with a dot was changed to "."; the "u" keystroke command that
deleted a point was changed to "d".
.NH 3
LISTS package modifications
.IP \(bu
Two new parameters were added to the \fIrimcursor\fP task, "wxformat" and
"wyformat". These parameters allow the user to specify the coordinate
formats for the output of the task and override any values stored in the
WCS in the image header.
.NH 3
OBSOLETE package added
.IP \(bu
An new package called OBSOLETE was added. Tasks will be moved to this
package as they are replaced by newer tasks in the system. OBSOLETE tasks
will then be removed at the time of the next release.
.IP \(bu
\fImkhistogram\fP, \fIimtitle\fP, \fIradplt\fP, and the old \fIimcombine\fP task have been moved to the
OBSOLETE package. Users should become familiar with \fIphistogram\fP, \fIhedit\fP,
\fIpradprof\fP, and the new \fIimcombine\fP and use
them instead since \fImkhistogram\fP, \fIimtitle\fP, \fIradplt\fP, and \fIoimcombine\fP will be
retired with the next release.
.NH 3
PLOT package modifications
.IP \(bu
A new task called \fIphistogram\fP was added to the PLOT package. This task
takes input from an image or from a list and allows full control
over the plotting parameters. This task replaces the \fIobsolete.mkhistogram\fP
task.
.IP \(bu
A new task \fIpradprof\fP was added to the PLOT package. This task plots or lists
the radial profile of a stellar object. This task replaces the
\fIobsolete.radplt\fP task.
.IP \(bu
A new task called \fIgdevices\fP was added to the package. \fIgdevices\fP prints
available information known about a particular class of device. The
default parameters are set up to print a list of the available stdimage
devices in the standard graphcap file.
.IP \(bu
WCS support was added to the tasks \fIgraph\fP, \fIpcol(s)\fP, and \fIprow(s)\fP. A new
parameter called "wcs" was added to define the coordinate system to be
used on the axis, either logical, physical or world. Two additional
parameters, "xformat" and "yformat", were also added to allow the user to set
the format for axis labels overriding any values in the image header.
The "xlabel" parameter values were extended to include the special word
"wcslabel" to select the WCS label for the x axis from the image header.
.IP \(bu
WCS support was added to the task \fIimplot\fP. A new parameter called
"wcs" was added to define the coordinate system for plotting, either logical,
physical, or world. Two new ":" commands were also added: ":w" allows
the user to set a new WCS type interactively; ":f" allows the user
to change the axis format, for instance, ":f %H" would change the axis
to read h:m:s, if the world coordinate RA had been defined in the image
header. The "space" key now prints out the coordinate and pixel value
information.
.IP \(bu
\fIgraph\fP has a another new parameter "overplot" that allows the user to overplot
multiple plots with different axes.
.IP \(bu
The default parameters for "floor" and "ceiling" in \fIcontour\fP and \fIsurface\fP were
changed to INDEF.
.NH 3
PROTO package reorganization and modifications
.PP
This package has been reorganized. The PROTO package now resides in the
core system. Tasks in the old PROTO package that were general image
processing tools were kept in this new PROTO package. Tasks that were more
data reduction specific were moved to the new NPROTO package in the NOAO
package. The current PROTO package now contains the tasks \fIbinfil\fP,
\fIbscale\fP, \fIepix\fP, \fIfields\fP, \fIfixpix\fP, \fIhfix\fP,
\fIimalign\fP, \fIimcentroid\fP, \fIincntr\fP, \fIimfunction\fP,
\fIimreplace\fP, \fIimscale\fP, \fIinterp\fP, \fIirafil\fP, \fIjoinlines\fP,
\fIsuntoiraf\fP, \fIwcsedit\fP, and \fIwcsreset\fP.
.IP \(bu
The new task \fIhfix\fP was added to the package. This task allows the user to
extract the image headers into a text file, view or modify this file with a
specified command, and then update the image header with the modified file.
.IP \(bu
A new task called \fIsuntoiraf\fP was added to this package. This is a host
dependent task that will most likely be useful only on Sun's. This task
converts a Sun raster file into an IRAF image.
.IP \(bu
Two new tasks dealing with the WCS were added to this package,
\fIwcsreset\fP and \fIwcsedit\fP. \fIwcsreset\fP resets the coordinate
systems in the image header to the logical coordinate system. \fIwcsedit\fP
allows the user to modify the existing WCS or to create a new WCS and then
update the image header.
.IP \(bu
A new version of \fIbscale\fP was added to the package. The task now takes a
list of input images and output images.
.IP \(bu
A new version of \fIimfunction\fP was added to the package. The task supports
many more functions, for example log10, alog10, ln, aln, sqrt, square, cbrt,
cube, abs, neg, cos, sin, tan, acos, asin, atan, hcos, hsin, htan, and
reciprocal.
.IP \(bu
\fIimreplace\fP was modified to support the "ushort" pixel type.
.IP \(bu
The task \fIjoin\fP has been renamed \fIjoinlines\fP.
.NH 3
Additions to XTOOLS and MATH
.PP
Programmers may be interested in the following new additions to the XTOOLS
and MATH libraries.
.IP \(bu
The interactive non-linear least squares fitting package INLFIT, developed by
Pedro Gigoux at CTIO, was added to XTOOLS.
.IP \(bu
The 1D image interpolation routines in the MATH library were modified
to support sinc interpolation.
.NH 3
Glossary of new tasks in the IRAF core system
.sp 0.5
\fR
.TS
center;
c c c c c
l c l c lw(4i).
Task Package Description
_
gdevices - plot - List available imaging or other graphics devices
hfix - proto - Fix image headers with a user specified command
imcombine - images - Combine images pixel-by-pixel using various algorithms
phistogram - plot - Plot or print the histogram of an image or list
pradprof - plot - Plot or list the radial profile of a stellar object
suntoiraf - proto - Convert Sun rasters into IRAF images
wcsedit - proto - Edit the image coordinate system
wcslab - tv - Overlay a displayed image with a world coordinate grid
wcsreset - proto - Reset the image coordinate system
.TE
.NH 2
Changes to the NOAO Packages
.PP
An updated version of the \fIobservatory\fP task has been installed at the
NOAO level. The task sets observatory parameters from a
database of observatories or from the parameters in the task itself.
Many packages and tasks within the NOAO packages that need information
about where the data was observed use information supplied by
the \fIobservatory\fP task.
.NH 3
ARTDATA package modifications
.PP
A new version of the ARTDATA package was released with IRAF version 2.9.1.
A summary of those changes plus modifications since that update are listed
below. A more comprehensive list of the changes included in V2.9.1 are
discussed in IRAF Newsletter Number 10.
.IP \(bu
A new task \fImkechelle\fP has been added that creates artificial 2D echelle
images.
.IP \(bu
A new task \fImkexamples\fP has been added. The task is intended to generate a
variety of artificial images to be used in testing or demonstrations.
.IP \(bu
A new task \fImkheader\fP adds or modifies
image headers using a header keyword data file.
.IP \(bu
The \fImk1dspec\fP task was modified to create multispec and echelle format
images, line by line.
.IP \(bu
A parameter "header" was added to \fImkobjects\fP, \fImknoise\fP, \fImk1dspec\fP, and
\fImk2dspec\fP so that a header data file could be added to the output image.
Other header parameters are also added to the image header such as
gain, rdnoise, and exptime.
.IP \(bu
A "comments" parameter was added to various tasks to include/exclude comments
in the header of the output image that describe the data parameters.
.NH 3
ASTUTIL package modifications
.IP \(bu
A new task \fIgratings\fP has been added to the package. This task computes
grating parameters; five of the seven parameters must be specified at
one time.
.IP \(bu
A new task \fIsetjd\fP has been added to the package. \fIsetjd\fP computes the geocentric,
heliocentric, and integer local Julian dates from information given in the
headers of the input list of images. This information is then listed or
added to the image headers.
.IP \(bu
A few changes were made to \fIsetairmass\fP. The default value for "update"
was changed to "yes"; an update field was added to the "show" messages;
a warning is printed if both "show" and "update" are set to "no"
indicating that nothing was done.
.NH 3
DIGIPHOT package modifications
.PP
A new version of the DIGIPHOT package was installed. Some changes were
made to the existing APPHOT package used for aperture photometry, and those
are mentioned below. But three new packages have also been installed, DAOPHOT,
PHOTCAL, and PTOOLS.
.PP
DAOPHOT has been available for the past two years as an add-on package known
as TESTPHOT. It is now part of the distributed system. The IRAF version of
DAOPHOT, used to do photometry in crowded fields, has been a collaborative
effort with Peter Stetson and Dennis Crabtree of the DAO. For the
convenience of the many TESTPHOT users, changes to the package since the
last release of TESTPHOT are summarized below.
.PP
PHOTCAL is the photometric calibration package for computing the transformations
of the instrumental magnitudes output from APPHOT and DAOPHOT
to the standard photometric system. This
package has been a collaborative effort with Pedro Gigoux at CTIO.
.PP
PTOOLS is a package containing an assortment of tools for manipulating
the data files produced from APPHOT and DAOPHOT. If users are using
STSDAS TABLES format data files then they must first install the
TABLES layered package. This package can be obtained from either STScI or
NOAO (see \f(CWiraf/contrib\fR in the IRAF network archive).
.NH 3
DIGIPHOT.APPHOT package modifications
.IP \(bu
The \fIapselect\fP task was replaced with the functionally equivalent \fItxdump\fP task.
\fItxdump\fP allows
the user to select fields of data from the output data files produced
from APPHOT tasks and either simply list the extracted data or save it
in another file.
.IP \(bu
A new task called \fIpexamine\fP has been added to the package. \fIpexamine\fP is a
general purpose tool for interactively examining and editing the data
files produced from tasks in either APPHOT or DAOPHOT. This task is
intended to complement the batch oriented task \fItxdump\fP.
.IP \(bu
All of the APPHOT tasks will now query to verify the "datamin" and "datamax"
values, if these values are used by the tasks.
.IP \(bu
The time of the observation, i.e. UT, can now be carried over into the output
data files, if a keyword in the image header contains this information.
.IP \(bu
If there is bad data within the photometry aperture a value of INDEF will
be stored in the data file for that magnitude.
.NH 3
DIGIPHOT.DAOPHOT (TESTPHOT) package modifications
.PP
This is a new package but for the convenience of the many users of the
TESTPHOT add-on package,
the changes to TESTPHOT between its last release and its installation into
the DIGIPHOT package as DAOPHOT are summarized below.
.IP \(bu
The \fIappend\fP, \fIconvert\fP, \fIdump\fP, \fIrenumber\fP, \fIselect\fP, and \fIsort\fP tasks were renamed
to \fIpappend\fP, \fIpconvert\fP, \fIpdump\fP, \fIprenumber\fP, \fIpselect\fP, and \fIpsort\fP.
.IP \(bu
The "text" parameter was moved from \fIdaopars\fP to the DAOPHOT package parameters.
.IP \(bu
All the DAOPHOT routines were modified so that "psfrad", "fitrad", and
"matchrad" are defined in terms of scale.
.IP \(bu
The tasks \fIallstar\fP, \fIgroup\fP, \fInstar\fP, \fIpeak\fP, \fIpsf\fP, and \fIsubstar\fP were all modified
to include "datamin" and "datamax" in their verify routines.
.IP \(bu
Support was added for a time of observation parameter to all the
appropriate DAOPHOT tasks. If present, this time will be carried over
into the output data files.
.IP \(bu
All the DAOPHOT tasks except \fIpsf\fP have been modified to accept lists of input
and output files.
.IP \(bu
The new \fIpexamine\fP task was added to this package. \fIpexamine\fP is a
general purpose tool for interactively examining and editing the data
files produced from tasks in either APPHOT or DAOPHOT. This task is
intended to complement the batch oriented task \fItxdump\fP.
.IP \(bu
Several changes were made to \fIpsf\fP: the default PSF image header will now
hold up to 66 stars (but it is still dependent on the environment
variable \f(CWmin_lenuserarea\fP); a check was added so that the same star can
not be added to the PSF twice; potential PSF stars are now rejected if
their sky or magnitude values are INDEF; a check was added so that stars
with INDEF valued positions are treated as stars that were not found.
.IP \(bu
\fIgroup\fP was modified so that the groups are output in y order instead of in
order of the size of the group.
.IP \(bu
Both \fIgroup\fP and \fIpeak\fP were modified so that stars with INDEF centers are not
written to the output file.
.NH 3
IMRED package modifications
.PP
The spectroscopic packages within the IMRED package have undergone quite a bit
of work and reorganization. The spectroscopic packages are now ARGUS,
CTIOSLIT, ECHELLE, HYDRA, IIDS, IRS, KPNOCOUDE, KPNOSLIT, and SPECRED.
These packages are a collection of tasks from APEXTRACT and ONEDSPEC that are
appropriate for the specific applications.
All these packages use the new versions of the APEXTRACT and ONEDSPEC packages;
the changes for APEXTRACT and ONEDSPEC are summarized below.
Earlier versions of all these packages were released as the NEWIMRED add-on
package. The NEWIMRED package is now defunct and the distributed system
contains the latest versions of these packages.
.PP
The spectroscopic packages now contain "DO" tasks that are scripts that
streamline the reduction process for the user. The "DO" tasks have been
modified for each particular application.
.PP
The ARGUS package is for the reduction of data taken with the CTIO \fIargus\fP
instrument. Its corresponding script task is \fIdoargus\fP.
.PP
The CTIOSLIT package is similar to the ARGUS package except that is a
collection of spectroscopic tasks used for general CTIO slit reductions. The
\fIdoslit\fP task allows for streamlined reductions.
.PP
The ECHELLE package has the addition of the \fIdoecslit\fP task for
simplied echelle reductions. The \fIdofoe\fP task has been added for the reduction
of Fiber Optic Echelle (FOE) spectra.
.PP
The HYDRA package is used for the reduction of multifiber data taken at
KPNO. The \fIdohydra\fP task has been customized for streamlining \fInessie\fP
and \fIhydra\fP reductions.
.PP
The KPNOCOUDE package has been customized for the KPNO Coude. The \fIdoslit\fP
task allows the user to go through the reduction process with as few
keystrokes as possible. The \fIdo3fiber\fP task is specialized for the 3 fiber
(two arc and one object) instrument.
.PP
The KPNOSLIT package can be used for general slit reductions at KPNO. The
\fIdoslit\fP task in this package is similar to that in the other packages.
.PP
The SPECRED package is the old MSRED package, used for general multispectral
reductions. This is a generic package that can be used for slit and multifiber/
aperture data. General \fIdoslit\fP and \fIdofibers\fP tasks are available.
.PP
Several of the spectroscopic packages has a special task called \fImsresp1d\fP
for creating 1d aperture response corrections from flat and
throughput data. This task is specialized for multiaperture or
multifiber data.
.PP
All of the "DO" tasks have reference manuals that are available in the
network archive in the \f(CWiraf/docs\fP directory.
.NH 3
IMRED.CCDRED package modifications
.IP \(bu
A new task \fIccdinstrument\fP was added to the package. The purpose of this
task is to help users create new CCD instrument translation files to use
with the package.
.IP \(bu
The \fIcombine\fP task (as well as \fIdarkcombine\fP, \fIflatcombine\fP, and \fIzerocombine\fP) is
the same task as the new \fIimcombine\fP task in IMAGES. A few parameters were
added for compatibility with the CCDRED tasks.
.IP \(bu
A new parameter was added to \fIccdproc\fP called "minreplace". Pixel values
in flat fields below the value for "minreplace" are replaced by the same
value (after overscan, zero, and dark corrections). This avoids dividing
by zero problems.
.IP \(bu
The default computation and output "pixeltype" in the package parameter
for CCDRED are both real. Note that both can now be specified separately.
.IP \(bu
The default parameters for \fIdarkcombine\fP and \fIflatcombine\fP have been changed.
.NH 3
NOBSOLETE package added
.PP
This new package has been defined but currently no tasks reside in it. This
package will be used as a repository for tasks that have been replaced by
newer tasks in the NOAO packages. The NOBSOLETE tasks will then be removed
at the time of the next release.
.NH 3
NPROTO package modifications
.PP
The old PROTO package was divided into two separate packages, one called
PROTO that now resides in the IRAF core system and the other called
NPROTO that resides in the NOAO package. The current NPROTO tasks
are \fIbinpairs\fP, \fIfindgain\fP, \fIfindthresh\fP, \fIiralign\fP, \fIirmatch1d\fP, \fIirmatch2d\fP, \fIirmosaic\fP,
\fIlinpol\fP, and \fIslitpic\fP. The \fIimedit\fP, \fIimexamine\fP, and \fItvmark\fP tasks were moved to
the IMAGES.TV package. The \fIndprep\fP task was moved to ONEDSPEC. All other tasks
were moved to the PROTO package at the core level.
.IP \(bu
Two new tasks called \fIfindgain\fP and \fIfindthresh\fP were added to this package.
\fIfindgain\fP determines the gain and read noise of a CCD from a pair of dome
flats and from a pair of bias/zero frames using the Janesick method.
\fIfindthresh\fP estimates the background noise level of the CCD using a sky
frame and the gain and readnoise of the CCD.
.IP \(bu
A new task called \fIlinpol\fP has been added to the PROTO package. This task
calculates the pixel-by-pixel fractional linear polarization
and polarization angle for three or four images. The polarizer must be
set at even multiples of a 45 degree position angle.
.IP \(bu
The task \fIndprep\fP used for CTIO 2DFRUTTI reductions was moved to the
ONEDSPEC package.
.IP \(bu
The task \fItoonedspec\fP was removed since its function can now be performed
by the \fIonedspec.scopy\fP task.
.NH 3
ONEDSPEC package reductions
.PP
There have been significant changes to the ONEDSPEC package.
A more detailed revisions summary is available
in the IRAF network archive as file \f(CWonedv210.ps.Z\fP in the
subdirectory \f(CWiraf/docs\fP.
.PP
The new package supports a variety of spectral image formats. The older
formats can still be read. In particular the one
dimensional "onedspec" and the two dimensional "multispec" format will
still be acceptable as input. Note that the image naming syntax for the
"onedspec" format using record number extensions is a separate issue and is
still provided but only in the IMRED.IIDS and IMRED.IRS packages. Any new
spectra created are either a one dimensional format using relatively simple
keywords and a two or three dimensional format which treats each line of
the image as a separate spectrum and uses a more complex world coordinate
system and keywords. For the sake of discussion the two formats are still
called "onedspec" and "multispec" though they are not equivalent to the
earlier formats.
.PP
In addition, the one dimensional spectral tasks may also operate on two
dimensional images. This is done by using the "dispaxis" keyword in the
image header or a package dispaxis parameter if the keyword is missing to
define the dispersion axis. In addition there is a summing parameter in
the package to allow summing a number of lines or columns. If the spectra
are wavelength calibrated long slit spectra, the product of the
\fIlongslit.transform\fP task, the wavelength information will also be properly
handled. Thus, one may use \fIsplot\fP or \fIspecplot\fP for plotting such data
without having to extract them to another format. If one wants to extract
one dimensional spectra by summing columns or lines, as opposed to using
the more complex APEXTRACT package, then one can simply use \fIscopy\fP (this
effectively replaces \fIproto.toonedspec\fP)
.PP
Another major change to the package is that spectra no
longer need to be interpolated to a uniform sampling in wavelength. The
dispersion functions determined by \fIidentify\fP/\fIreidentify\fP can now be carried along
with the spectra in the image headers and recognized throughout the package and
the IRAF core system. Thus the WCS has been fully implemented in the ONEDSPEC
tasks and although much is to be gained by this it can cause problems with
earlier IRAF systems as well as making it difficult to import data into
non-IRAF software. But it is now possible to use \fIimcopy\fP with an image section
on a spectrum, for instance, and have the wavelength information retained
correctly.
.PP
A sinc interpolator is now available
for those tasks doing geometric corrections or interpolations. This option
can be selected by setting the "interp" parameter in the ONEDSPEC package
parameters.
.PP
Other changes are summarized:
.IP \(bu
The new task \fIderedden\fP corrects input spectra for interstellar extinction, or
reddening.
.IP \(bu
The new task \fIdopcor\fP corrects input spectra by removing a specified doppler
velocity. The opposite sign can be used to add a doppler shift to a spectrum.
.IP \(bu
The new task \fIfitprofs\fP fits 1D gaussian profiles to spectral lines or
features in an image line or column. This is done noninteractively and
driven by an input list of feature positions.
.IP \(bu
The task \fIndprep\fP was moved to this package from the PROTO package. \fIndprep\fP
is used for CTIO \fI2DFRUTTI\fP reductions.
.IP \(bu
The new task \fIsapertures\fP adds or modifies beam numbers and
aperture titles for selected apertures based on an aperture
identification file.
.IP \(bu
The new task \fIsarith\fP does spectral arithmetic and includes unary operators.
The arithmetic can be performed on separate input spectra or on apertures
within a multispec format image.
.IP \(bu
The task \fIscombine\fP has been added to the package. This new task is similar
to the new \fIimcombine\fP task in the IMAGES package but is specialized for
spectral data.
.IP \(bu
The new task \fIscopy\fP copies subsets of apertures and does format
conversions between the different spectrum formats.
.IP \(bu
The new task \fIsfit\fP fits spectra and outputs the fits in various ways.
This includes a new feature to replace deviant points by the fit.
Apertures in multispec and echelle format are fit independently.
.IP \(bu
The tasks \fIaddsets\fP, \fIbatchred\fP, \fIbswitch\fP, \fIcoincor\fP, \fIflatdiv\fP, \fIflatfit\fP, \fIsubsets\fP
and \fIsums\fP were moved to the IIDS and IRS packages.
.IP \(bu
The task \fIcombine\fP was removed with the all new \fIscombine\fP suggested in its place.
.IP \(bu
The tasks \fIrebin\fP, \fIsflip\fP and \fIshedit\fP were removed from the package.
Rebinning of spectra can now be done with \fIscopy\fP or \fIdispcor\fP. \fIscopy\fP and \fIimcopy\fP
can now be used in place of \fIsflip\fP. And \fIhedit\fP is an alternative for \fIshedit\fP.
.IP \(bu
\fIbplot\fP and \fIslist\fP have been modified to support the multispec format.
.IP \(bu
The task \fIcontinuum\fP now does independent fits for multispec and
echelle format spectra.
.IP \(bu
There is now only one \fIdispcor\fP task doing the work of the three previous
tasks \fIdispcor\fP, \fImsdispcor\fP and \fIecdispcor\fP. Several of the parameters for this
task have been changed. The old "recformat" and "records" parameters for
supporting the old onedspec format have been removed except in the IIDS/IRS
packages. A "linearize" parameter has been added for setting the interpolation
to yes or no on output. The "interpolation" parameter was removed since this
information is now read from the package parameter "interp". The "ignoreaps"
parameter has been changed to "samedisp".
.IP \(bu
\fIidentify\fP and \fIreidentify\fP now treat multispec format spectra
and two dimensional images as a unit allowing easy movement between
different image lines or columns. The database is only updated upon
exiting the image. The "j", "k", and "o" keys have been added to the
interactive sessions to allow for scrolling through the different lines
in a two dimensional image. The database format now uses aperture numbers
rather than image sections for multispec format spectra.
.IP \(bu
The task \fIspecplot\fP has new parameters "apertures" and "bands" to select
spectra for plotting in the multispec format.
.IP \(bu
\fIsplot\fP now allows deblending of any number of components and
allows simultaneous fitting of a linear background. Several cursor keys
have been redefined and colon commands have been added to fully support
the new multispec format and to add even more flexibility to the task than
before! Please see the help pages for details.
.IP \(bu
The \fIreidentify\fP task is essentially a new task. The important changes
are an interactive review option, the ability to add features from
a line list, using the same reference spectrum for all other spectra in
a 2D reference image rather than "tracing" (using the results of the
last reidentification as the initial guess for the next one) across the
image, and matching image lines/columns/apertures from a 2D reference
image to other 2D images rather than "tracing" again.
.NH 3
RV package added
.PP
This is a new package installed with IRAF version 2.10. A version of this
package, RV0, has been available as an add-on for the past year or so. The
package contains one main task \fIfxcor\fP that performs a Fourier
cross-correlation on the input list of spectra. The package supports the
multispec format.
.NH 3
TWODSPEC package modifications
.PP
The old MULTISPEC package that has resided in the TWODSPEC package for
years has been disabled. The code is still there for browsing, however, and
the package can be resurrected easily if needed.
.PP
The \fIobservatory\fP task was moved to the NOAO package itself. The \fIsetairmass\fP
task was moved to LONGSLIT. And the \fIsetdisp\fP task is no longer needed;
task or package parameters are used in its place.
.PP
Changes to the APEXTRACT and LONGSLIT packages are summarized below.
.NH 3
TWODSPEC.APEXTRACT package modifications
.PP
A new version, version 3, of the IRAF APEXTRACT package has been
completed. A detailed revisions summary is available in the IRAF
network archive (file \f(CWapexv210.ps.Z\fP in \f(CWiraf/docs\fP).
.PP
There were three goals for the new package: new and improved cleaning
and variance weighting (optimal extraction) algorithms, the addition of
recommended or desirable new tasks and algorithms (particularly to
support large numbers of spectra from fiber and aperture mask
instruments), and special support for the new image reduction scripts in
the various IMRED packages.
.PP
The multispec format, the default image format for all spectroscopic packages
except IIDS and IRS, is either 2D or 3D (the 3D format is new with this
release).
The 3D format is produced when the parameter "extras" is set to yes in the
extraction tasks. The basic 2D format, which applies to
the first plane of the 3D format, has each 1D aperture spectra extracted
in a line. Thus, the first coordinate is the pixel coordinate along the
spectra. The second coordinate refers to the separate apertures. The
third coordinate contains extra information associated with the spectrum
in the first plane. The extra planes are:
.DS L
1: Primary spectra which are variance and/or cosmic ray cleaned
2: Spectra which are not weighted or cleaned
3: Sky spectra when using background subtraction
4: Estimated sigma of the extracted spectra
.DE
If background subtraction is not done then 4 moves down to plane 3.
Thus:
.DS L
output.ms[*,*,1] = all primary spectra
output.ms[*,5,1] = 5th aperture spectrum which is cleaned
output.ms[*,5,2] = raw/uncleaned 5th aperture spectrum
output.ms[*,5,3] = sky for 5th spectrum
output.ms[*,5,4] = sigma of 5th spectrum
.DE
.LP
The following summarizes the major new features and changes.
.IP \(bu
New techniques for cleaning and variance weighting extracted spectra have
been implemented.
.IP \(bu
Special features for automatically numbering and identifying large
numbers of apertures have been added.
.IP \(bu
There is no longer a limit to the number of apertures that can be extracted.
.IP \(bu
The new task \fIapall\fP integrates all the parameters used for
one dimensional extraction of spectra.
.IP \(bu
The new task \fIapfit\fP provides various types of fitting for two dimensional
multiobject spectra.
.IP \(bu
The new task \fIapflatten\fP creates flat fields from fiber and slitlet
spectra.
.IP \(bu
The new task \fIapmask\fP creates mask images from aperture definitions using the
new pixel list image format. No tasks
have yet been written, however, to use this new mask image format.
.IP \(bu
The new tasks and algorithms, \fIaprecenter\fP and \fIapresize\fP, will
automatically recenter and resize aperture definitions.
.IP \(bu
The task \fIapio\fP is defunct. Its functionality has been replaced by the
APEXTRACT package parameters.
.IP \(bu
The task \fIapstrip\fP has been removed.
.IP \(bu
Minor changes have been made to the old "AP" tasks to accommodate these
new changes in the package; in some cases new parameters have been added to
the task and in other cases new cursor options have been implemented. See the
help pages for details.
.NH 3
TWODSPEC.LONGSLIT package modifications
.IP \(bu
The "dispaxis" parameter was added to the package parameters. This value
is used unless DISPAXIS is in the image header.
.NH 3
Glossary of new tasks in the NOAO packages
.sp 0.5
\fR
.TS
center;
c c c c c
l c l c lw(4i).
Task Package Description
_
addstar - daophot - Add artificial stars to an image using the computed psf
allstar - daophot - Group and fit psf to multiple stars simultaneously
apall - apextract - Extract 1D spectra (all parameters in one task)
apfit - apextract - Fit 2D spectra and output the fit, difference, or ratio
apflatten - apextract - Remove overall spectral and profile shapes from flat fields
apmask - apextract - Create and IRAF pixel list mask of the apertures
aprecenter - apextract - Recenter apertures
apresize - apextract - Resize apertures
ccdinstrument - ccdred - Review and edit instrument translation files
centerpars - daophot - Edit the centering algorithm parameters
chkconfig - photcal - Check the configuration file for grammar and syntax errors
continpars - rv - Edit continuum subtraction parameters
daofind - daophot - Find stars in an image using the DAO algorithm
daopars - daophot - Edit the daophot algorithms parameter set
datapars - daophot - Edit the data dependent parameters
deredden - onedspec - Apply interstellar extinction correction
do3fiber - kpnocoude - Process KPNO coude three fiber spectra
doargus - argus - Process ARGUS spectra
doecslit - echelle - Process Echelle slit spectra
dofibers - specred - Process fiber spectra
dofoe - echelle - Process Fiber Optic Echelle (FOE) spectra
dohydra - hydra - Process HYDRA spectra
dopcor - onedspec - Apply doppler corrections
doslit - ctioslit - Process CTIO slit spectra
doslit - kpnocoude - Process KPNO coude slit spectra
doslit - kpnoslit - Process slit spectra
doslit - specred - Process slit spectra
evalfit - photcal - Compute the standard indices by evaluating the fit
filtpars - rv - Edit the filter function parameters
findgain - nproto - Estimate the gain and readnoise of a CCD
findthresh - nproto - Estimate a CCD's sky noise from the gain and readnoise
fitparams - photcal - Compute the parameters of the transformation equations
fitprofs - onedspec - Fit gaussian profiles
fitskypars - daophot - Edit the sky fitting algorithm parameters
fxcor - rv - Radial velocities via Fourier cross correlation
gratings - astutil - Compute and print grating parameters
group - daophot - Group stars based on positional overlap and signal/noise
grpselect - daophot - Select groups of a specified size from a daophot database
invertfit - photcal - Compute the standard indices by inverting the fit
istable - ptools - Is a file a table or text database file ?
linpol - nproto - Calculate polarization frames and Stoke's parameters
keywpars - rv - Translate the image header keywords used in RV package
mkcatalog - photcal - Type in a standard star catalog or observations file
mkconfig - photcal - Prepare a configuration file
mkechelle - artdata - Make artificial 1D and 2D echelle spectra
mkexamples - artdata - Make artificial data examples
mkheader - artdata - Append/replace header parameters
mkimsets - photcal - Prepare an image set file for input to (mk)(n)obsfile
mk(n)obsfile - photcal - T{
Prepare a single (multi)-starfield observations file from apphot/daophot output
T}
mkphotcors - photcal - T{
Type in/check any photometric corrections files required by mk(n)obsfile
T}
msresp1d - argus - Create 1D response spectra from flat field and sky spectra
msresp1d - hydra - Create 1D response spectra from flat field and sky spectra
msresp1d - kpnocoude - Create fiber response spectra from flat field and sky spectra
msresp1d - specred - Create 1D response spectra from flat field and sky spectra
nstar - daophot - Fit the psf to groups of stars simultaneously
obsfile - photcal - T{
Prepare a single (multi)-starfield observations file from a user-created text file
T}
pappend - daophot - Concatenate a list of daophot databases
pappend - ptools - Concatenate a list of apphot/daophot databases
pconvert - daophot - Convert a text database to a tables database
pconvert - ptools - Convert from an apphot/daophot text to tables database
pdump - daophot - Print selected fields from a list of daophot databases
pdump - ptools - Print selected columns of a list of daophot/apphot databases
peak - daophot - Fit the psf to single stars
pexamine - apphot - Interactively examine or edit an apphot output file
pexamine - daophot - Interactively examine and edit a daophot database
pexamine - ptools - Interactively examine and edit an apphot/daophot database
phot - daophot - Compute sky values and initial magnitudes for a list of stars
photpars - daophot - Edit the photometry parameters
prenumber - daophot - Renumber stars in a daophot database
prenumber - ptools - Renumber a list of apphot/daophot databases
pselect - daophot - Select records from a daophot database
pselect - ptools - Select records from a list of apphot/daophot databases
psf - daophot - Fit the point spread function
psort - daophot - Sort a daophot database
psort - ptools - Sort a list of apphot/daophot databases
sapertures - onedspec - Set or change aperture header information
sarith - onedspec - Spectrum arithmetic
scombine - onedspec - Combine spectra having different wavelength ranges
scopy - onedspec - Select and copy apertures in different spectral formats
seepsf - daophot - Compute an image of the point spread function
setjd - astutil - Compute and set Julian dates in images
sfit - onedspec - Fit spectra and output fit, ratio, or difference
substar - daophot - Subtract the fitted stars from the original image
tbappend - ptools - Concatenate a list of apphot/daophot tables databases
tbdump - ptools - Print selected columns of a list of tables databases
tbrenumber - ptools - Renumber a list of apphot/daophot tables databases
tbselect - ptools - Select records from a list of apphot/daophot tables databases
tbsort - ptools - Sort a list of apphot/daophot tables databases
txappend - ptools - Concatenate a list of apphot/daophot text databases
txdump - apphot - Dump selected fields from an apphot output file
txdump - ptools - Print selected columns of a list of apphot/daophot text databases
txrenumber - ptools - Renumber a list of apphot/daophot text databases
txselect - ptools - Select records from a list of apphot/daophot text databases
txsort - ptools - Sort a list of apphot/daophot text databases
.TE
.bp
.NH
Programming Environment Revisions
.NH 2
Compatibility Issues
.PP
V2.10 IRAF requires that any local IRAF programs external to the V2.10
system (such as layered packages or locally written tasks) be \fIfully
recompiled\fR if they are relinked against V2.10. The problem arises only
if the programs are relinked; external programs will continue to run after
V2.10 is installed, but linker errors will be seen if the programs are
relinked without being fully recompiled. This is because the internal names
of some important system routines were changed in V2.10 to avoid name
clashes with host system routines. For example, the SPP procedure "rename"
is now translated to "xfrnam" when the SPP code it appears in is compiled.
.PP
As always, actual interface changes affecting existing source code were very
few. The macro "E" in \f(CW<math.h>\fR was renamed to "BASE_E" to minimize
the chance of an accidental name collision. The calling sequence for the
\fIonentry\fR procedure (ETC) was changed, but since this is a little used
system procedure very few tasks should be affected. A number of new
procedures were added to MTIO and the syntax of a magtape device has
changed; old applications should be modified to use the MTIO procedures to
operate upon magtape device names.
.PP
These and other revisions affecting the programming environment
are discussed in more detail below.
.NH 2
Portability Issues
.PP
The V2.10 UNIX/IRAF kernel now includes "#ifdef SYSV" support for System V
UNIX, making it easier to port IRAF to SysV based systems. The UNIX/IRAF
HSI (host system interface) is still not as portable to UNIX variants as it
could be, but at this point it is easier for us to make the minor revisions
required for a new port than to further refine the HSI. The disadvantage is
that it is harder than it should be for people in the community to do their
own IRAF ports, due to the level of IRAF expertise required to tune the
code. Someday we plan to generate a generic-UNIX HSI. Note that these
comments pertain only to the few thousand lines of code in the HSI - the
bulk of the IRAF code is 100% portable (identical on all IRAF systems) as it
has always been.
.PP
The recent port of IRAF to A/UX (the Apple Macintosh UNIX) is interesting
from a portability standpoint because we used the publically available
Fortran to C translator \fIf2c\fR plus the GNU C compiler \fIgcc\fR to
compile all the SPP and Fortran code in IRAF. This was remarkably
successful and means that the IRAF code is now portable to any system with a
C compiler. In the process of performing these compilations a few dozen
minor bugs were found by the static compile time checking performed by
\fIf2c\fR and \fIgcc\fR. The IRAF C code was run through \fIgcc\fR with
ANSI mode enabled, and hence should now be ANSI-C compatible. The GNU
debugger \fIgdb\fR proved to be an effective tool for debugging of IRAF code
compiled with \fIgcc\fR.
.NH 2
Software Tools
.NH 3
LOGIPC feature
.PP
A new facility has been added to UNIX/IRAF (all systems) for debugging
interprocess communication (IPC). This feature will also be useful for
debugging tasks standalone, particularly in cases where a bug seen when
running a task from the CL is difficult to reproduce when the task is run
standalone. The new facility allows one to carry out a normal IRAF session
while transparently logging all interprocess communications. Each process
can then be rerun individually using the logged IPC to exactly duplicate
the functioning of the process to, e.g., examine the program operation in
detail under a debugger.
.PP
The facility is this: if LOGIPC is defined in the host environment when an
iraf process is started, the process will create two files \fIpid\f(CW.in\fR
and \fIpid\f(CW.out\fR, where \fIpid\fR is the process id. Everything read
from the IPC input file is copied to the \f(CW.in\fR file, and everything
written to the IPC output (i.e., sent back to the CL) is copied to
the \f(CW.out\fR file. This is done only for connected subprocesses.
It will work for any connected subprocess, e.g., normal cached processes and
graphics subkernels in both foreground and background CLs, but not the i/o
of the CL itself since the CL is not driven by IPC.
.PP
The IPC streams saved are an exact binary copy of whatever was sent via IPC,
including the binary IPC packet headers, and binary graphics data, and so
on. All the IPC communications used to start up the process, run zero or
more tasks, and close the process down will be logged. Most IPC traffic is
textual in nature so it will usually be possible to examine the IPC files
with a file pager, although the results may be less than satisfactory if
binary data such as a graphics metacode stream is logged. It is not
necessary to examine the IPC files to use them for process execution or
debugging.
.PP
A particularly interesting use of this feature is to allow a process to be
run under the CL in the normal fashion, then rerun under a host level
debugger using the saved IPC input to duplicate the input and actions of the
process when run under the CL. For example,
.XS
% setenv LOGIPC
% cl
cl> dir
cl> logout
% unsetenv LOGIPC
.XE
will run the CL, saving the IPC of all subprocesses, e.g. \f(CWx_system.e\fR.
We can then run the system process manually, using the saved IPC input:
.XS
% $iraf/bin/x_system.e -c < \fIpid\fR.in
.XE
To run the process under \fIadb\fR or \fIdbx\fR, using the saved input:
.XS
% adb $iraf/bin/x_system.e
:r <\fIpid\fR.in -c
.XE
or
.XS
% dbx $iraf/bin/x_system.e
dbx> r -c < \fIpid\fR.in
.XE
Note that the redirection has to be given first for \fIadb\fR, and last for
\fIdbx\fR. This also works for \fIgdb\fR using the \fIrun\fR command. Some
implementations of \fIadb\fR are picky about syntax and will not allow a
space between the "<" and the process id in the :r command.
.PP
Running a task in this way is not identical to running the task standalone,
e.g. using a \fIdparam\fR file for parameter input, because the full
runtime context of the process as run under the CL is reproduced by LOGIPC
but not when the task is run standalone. The differences are subtle but can
be important when trying to reproduce a bug seen when the process is run
under the CL. It is often the case that a bug seen when a task is run
from the CL will disappear when the task is run standalone, but in most
cases LOGIPC will duplicate the bug.
.NH 3
XC changes
.PP
The \fIxc\fR program (IRAF compiler-linker) underwent the following changes for
V2.10, in addition to the usual host-system specific changes required to
support new host compiler versions.
.PP
Multiple "-p pkgname" arguments are now supported. These are used when
compiling a module which uses multiple package environments, e.g.,
.XS
cl> xc -p noao -p tables foo.x
.XE
Each package environment may define package environment variables,
directories to be searched for include files and libraries, and so on.
Package environments are used by the IRAF layered packages.
.PP
Host libraries named on the command line using the -l switch (e.g.,
"-lresolv") are now searched after the IRAF system libraries, rather than
before as in previous versions of \fIxc\fR. If the host library is
referenced by absolute pathname it is still searched before the IRAF
libraries, since the command line order determines the search order.
.NH 3
SPPLINT code checker
.PP
A static code checker utility \fIspplint\fR has been developed for checking
SPP programs. This uses the SPP translation utilities in IRAF to convert
SPP to Fortran, \fIf2c\fR to generate C code, and \fIlint\fR to check the C
code. The code is checked in various ways at all phases of translation.
Some of the most useful checking are performed by \fIf2c\fR, which checks
the number and type of arguments in all calls to IRAF VOS library
procedures. In other words, \fIspplint\fR will determine if an IRAF library
procedure is called incorrectly, as well as perform a variety of other
checks.
.PP
The \fIspplint\fR utility is not included in the main IRAF release, but is
available separately. Contact the IRAF project for information on the
availability of this and other optional code development utilities.
.NH 3
Multiple architecture support
.PP
Multiple architecture support is a way of using multiple sets of compiled
program binaries within a single copy of IRAF. Multiple sets of binaries
are used to support different machine architectures (e.g. sparc and Motorola),
different compiler options (floating point options, vectorization options,
profiling options), different compilers, and so on.
.PP
The command for checking the architecture of the IRAF core system or a
layered package has been changed from \fIshowfloat\fR to \fIarch\fR to
reflect the fact that multiple architecture support is no longer used merely
to select the floating point option.
.XS
cl> mkpkg arch
sparc
.XE
The default architecture of the distributed system is "generic", meaning
no specific architecture has been set (the source tree is generic, not
configured for any particular architecture).
.PP
It is suggested that developers of layered software for IRAF adopt this
same convention in their root \fImkpkg\fR files.
.NH 3
Package environments
.PP
All the HSI software utilities now permit multiple "-p pkgname" package
environment references. The host \f(CWPKGENV\fR environment variable now
also permits multiple package environments to be referenced, e.g.
.XS
% setenv PKGENV "noao tables xray"
.XE
The package names should be whitespace delimited (\f(CWPKGENV\fR is used to
avoid having to give the "-p" flags on the \fImkpkg\fR or \fIxc\fR command
line). To successfully load a package enironment, the package root
directory must be defined in \f(CWhlib$extern.pkg\fR or in the user's host
environment. A host environment definition will override the value given in
extern.pkg.
.NH 3
Finding module sources
.PP
IRAF V2.10 includes a "tags" file in the IRAF root directory to aid software
development. This file contains an index to all procedures in the IRAF VOS
and HSI and can be used with host editors such as \fIvi\fR to rapidly find
and display the source for IRAF system procedures. Note that the names of
the kernel procedures are given in upper case, e.g., "ZOPNBF", whereas the
names of the VOS procedures are given in lower case. To use the tags file
with \fIvi\fR, start the editor at the IRAF root directory and while in the
editor, type a command such as ":ta foo" to view the source for procedure
\fIfoo\fR.
.NH 2
Programming Interface Changes
.NH 3
IEEE floating support
.PP
Modifications were made to the IEEE floating conversion routines in the OSB
package to support NaN mapping. This is a low level package used by, e.g.,
the MII package in ETC. The interface as it currently stands is summarized
below.
.XS
ieepak[rd] (datum) # pack scalar value
ieeupk[rd] (datum) # unpack scalar value
ieevpak[rd] (native, ieee, nelem) # pack vector
ieevupk[rd] (ieee, native, nelem) # unpack vector
iee[sg]nan[rd] (NaN) # set/get NaN value
ieemap[rd] (mapin, mapout) # enable/disable NaN mapping
ieestat[rd] (nin, nout) # get count of NaN values
ieezstat[rd] () # zero NaN counters
.XE
.PP
The new or modified routines are \fIieesnan\fR, \fIieegnan\fR, \fIieemap\fR,
\fIieestat\fR, and \fIieezstat\fR. By NaN (not-a-number) we refer
collectively to all IEEE non-arithmetic values, not just IEEE NaN. The
routines \fIieesnan\fR and \fIieegnan\fR set or get the native floating
value used to replace NaNs or overflows occurring when converting IEEE to the
native floating format (any floating value will do, e.g., zero or INDEF).
If NaN mapping is enabled, the \fIieestat\fR routines may be used to
determine the number of input or output NaN conversions occurring since the
last call to \fIieezstat\fR. Both real and double versions of all routines
are provided.
.PP
The NaN mapping enable switch and statistics counters are undefined at
process startup; programs which use the IEEE conversion package should call
\fIieemap\fR to enable or disable NaN mapping, and \fIieezstat\fR to
initialize the statistics counters.
.NH 3
MATH libraries
.PP
The following changes were made to the MATH libraries in the IRAF core
system. Refer to the online help pages of the affected routines for
detailed information.
.RS
.IP \(bu
The one-dimensional image interpolation library \fBiminterp\fR was modified
to add support for sinc interpolation.
.IP \(bu
A new library \fBnlfit\fR was added for non-linear function fitting.
An interactive graphics front end to this was also added in XTOOLS.
.IP \(bu
The name of the symbol \f(CWE\fR in \f(CW<math.h>\fR was changed to
\f(CWBASE_E\fR to minimize the chance of name clashes.
.RE
.NH 3
CLIO interface
.PP
The CLIO (command language i/o) interface underwent the following changes
for version 2.10 IRAF.
.RS
.IP \(bu
A README file was added to the source directory containing an up to date
interface summary.
.IP \(bu
The routines \fIclgpset\fR and \fIclppset\fR (get/put string valued
parameter) were renamed \fIclgpseta\fR and \fIclppseta\fR. The old
procedures were retained for compatibility but are now obsolete and may at
some point in the future disappear or be reused for some other function.
.IP \(bu
Two new routines \fIcllpset\fR and \fIclepset\fR were added for listing
and editing psets (parameter sets).
.RE
.LP
The calling sequences for the new pset routines are as follows.
.XS
cllpset (pp, fd, format) # list pset
clepset (pp) # edit pset
.XE
These new routines are still considered experimental and should be avoided
or used with caution (they could change).
.PP
Internal to the CLIO code, the CLIO parameter caching package underwent
minor changes to add a new \fIclc_compress\fR routine and improve pset
handling, as part of the minilanguage support effort.
.RE
.NH 3
ETC interface
.PP
The ETC interface contains miscellaneous system interface routines.
The ETC interface underwent the following changes for V2.10 IRAF.
.NH 4
Calling sequence for onentry changed
.PP
The calling sequence for the \fIonentry\fR routine was changed. The new
calling sequence is as follows.
.XS
action = onentry (prtype, bkgfile, cmd)
.XE
The \fIonentry\fR procedure is an optional procedure which is called when an
IRAF process starts up. Normally the onentry procedure is a no-op, passing
control to the IRAF main in-task interpreter. Custom IRAF applications,
e.g., the CL, have a special \fIonentry\fR procedure which replaces the
default in-task interpreter.
.PP
The change made to the \fIonentry\fR calling sequence was the addition of
the additional argument \fIcmd\fR. This argument receives the command line
used to invoke the IRAF process at the host level. The application can
parse this command line to extract arguments, allowing the IRAF process to
operate as a host program (it is already possible to call any IRAF task from
the host level, but use of an \fIonentry\fR procedure allows the in-task
interpreter to be bypassed and gives the application control over parsing
the command line).
.PP
See \f(CWetc$onentry.x\fR for additional information on how to use this
procedure.
.NH 4
New onerror and onexit procedures
.PP
Two new procedures \fIonerror_remove\fR and \fIonexit_remove\fR were added.
These have the following calling sequences.
.XS
onerror_remove (proc) # remove posted onerror procedure
onexit_remove (proc) # remove posted onexit procedure
.XE
The new routines are used to remove \fIonerror\fR or \fIonexit\fR procedures
posted by a task during task execution. Such user procedures are called
if the task aborts (\fIonerror\fR procedures) or during normal task exit
(\fIonexit\fR procedures). Formerly there was no way to "unpost" the
procedures other than by the normal cleanup occurring during task termination.
.NH 4
New gqsort routine
.PP
A new quick-sort routine \fIgqsort\fR (generalized quick sort) was added.
This has the following calling sequence.
.XS
gqsort (x, nelem, compare, client_data)
.XE
\fIgqsort\fR is identical to the old \fIqsort\fR routine except for the
addition of the fourth argument \fIclient_data\fR. This is an integer value
which is passed on to the \fIcompare\fR procedure during sorting to compare
two data values. The \fIcompare\fR routine is called as follows.
.XS
result = compare (client_data, x1, x2)
.XE
The new routine eliminates the need to use a common area to pass information
to the compare routine, as was often necessary with \fIqsort\fR.
.NH 3
FIO interface
.PP
The FIO interface (file i/o) underwent minor changes to fix some bugs
affecting pushed back data. The \f(CWF_UNREAD\fR file status parameter
will now correctly report pushed back data as well as any buffered
input file data. The \f(CWF_CANCEL\fR file set option will now cancel
any pushed back data.
.NH 4
Nonblocking terminal i/o
.PP
A new nonblocking form of raw mode terminal input has been added. This
permits polling the terminal for input without blocking (suspending process
execution) if no input is available. In a character read, EOF is returned
if no input is available otherwise the character value is returned.
An example illustrating the use of nonblocking terminal i/o follows.
.XS
include <fset.h>
task foo
procedure foo()
.sp 0.5v
int fd, ch
int getci()
.sp 0.5v
begin
fd = STDIN
call fseti (fd, F_IOMODE, IO_RAW+IO_NDELAY)
.sp 0.5v
repeat {
if (getci(fd,ch) == EOF)
call printf ("no pending input\\\\r\\\\n")
else {
call printf ("ch = %03o\\\\r\\\\n")
call pargi (ch)
}
call sleep (1)
} until (ch == '\\\\004' || ch == 'q')
.sp 0.5v
call fseti (fd, F_IOMODE, IO_NORMAL)
end
.XE
.PP
This sample program sets the terminal i/o mode to nonblocking raw mode and
polls the terminal once per second, printing the character value in octal if
a character is typed on the terminal, exiting when ctrl/d or 'q' is typed.
Note that in raw mode characters such as ctrl/d or ctrl/c are passed through
as data and do not get mapped to EOF, generate an interrupt, and so on.
Raw mode i/o such as this will work both when running a task under the CL
and standalone, and in combination with IRAF networking (e.g. to access a
remote device).
.PP
Nonblocking terminal input is used in applications which run continuously
but which we wish to be able to control interactively.
.NH 3
FMTIO interface
.PP
The FMTIO interface (formatted i/o) is used to format output text or decode
input text. The V2.10 release adds two new \fIprintf\fR output formats,
\f(CW%H\fR and \f(CW%M\fR. These are used to print numbers in
hours-minutes-seconds or minutes-seconds format and are equivalent to the
older output formats \f(CW%h\fR and \f(CW%m\fR except that the number is
first divided by 15. This converts degrees to hours allowing values given
in units of degrees to be printed as hours with just a change of the output
format. In other words, given a number N in units of degrees, \f(CW%H\fR
would print the number in hours-minutes-seconds, i.e., "hh:mm:ss.ss",
whereas \f(CW%h\fR would print the same number as degrees-minutes-seconds,
"dd:mm:ss.ss". The \f(CW%m\fR formats are similar except that only two of
the three fields are printed.
.NH 3
GTY interface
.PP
The GTY interface is a generalized version of that portion of the older TTY
interface dealing with termcap format files. The TTY code which accesses
termcap format files has been extracted to form the new GTY interface,
allowing arbitrary termcap format files to be accessed by filename, unlike
TTY which returns TTY descriptors given the termcap or graphcap device
name. GTY was contributed by Skip Schaller of Steward Observatory.
.XS
gty = gtyopen (termcap_file, device, ufields)
gtyclose (gty)
cp = gtycaps (gty)
pval = gtyget[bir] (gty, cap)
nchars = gtygets (gty, cap, outstr, maxch)
.XE
.PP
The \fIgtyopen\fR call returns the GTY descriptor for the named \fIdevice\fR
from the file \fItermcap_file\fR. The \fIufields\fR string may be either
NULL or a list of colon-delimited device capabilities, which will override
the corresponding capabilities in the device entry given in the termcap
file. If \fItermcap_file\fR is the null string \fIufields\fR is taken to be
the device entry for the named device. The \fIgtycaps\fR routine may be
used to get the entire device entry as a string, whereas the \fIgtyget\fR
and \fIgtygets\fR routines are used to get the values of individual
capabilities or parameters.
.NH 3
MTIO interface
.PP
MTIO is the magtape i/o interface. The magtape i/o subsystem was
extensively revised for V2.10 IRAF, as documented earlier in this revisions
summary. The VOS level MTIO interface itself was not changed other than to
add a few new routines. The \fItapecap\fR facility is new in V2.10. The
revisions to the host level magtape driver ZFIOMT required that the
calling sequences of some of the interface routines be changed.
.NH 4
MTIO applications programming interface
.PP
The current MTIO applications programming interface is summarized below.
Most of these routines are new: the old routines are \fImtfile\fR,
\fImtopen\fR, \fImtrewind\fR and \fImtposition\fR.
.XS
yes|no = mtfile (fname)
yes|no = mtneedfileno (mtname)
gty = mtcap (mtname)
mtfname (mtname, file, outstr, maxch)
.sp 0.5v
mtparse (mtname, device, fileno, recno, attrl, maxch)
mtencode (mtname, maxch, device, fileno, recno, attrl)
.sp 0.5v
fd = mtopen (mtname, acmode, bufsize)
mtrewind (mtname, initcache)
mtposition (mtname, file, record)
.XE
.PP
The \fImtfile\fR routine is used to test whether the given filename is a
magtape file or something else, i.e., a disk file. \fImtneedfileno\fR
tests whether a file number has been specified in \fImtname\fR (e.g.,
to determine whether or not to query for a file number parameter).
\fImtfname\fR takes \fImtname\fR and a file number and constructs a new
magtape device name in the output string. \fImtparse\fR parses a magtape
device name into its component parts, and \fImtencode\fR does the reverse.
\fImtcap\fR returns the GTY descriptor of the tapecap entry for the device.
\fIgtyclose\fR should be used to free this descriptor when it is no longer
needed.
.PP
Some older magtape applications programs parse the magtape device name
directly, looking for characters like `['. These old programs are making
assumptions about the form of a magtape device name which are probably
no longer true. Such old applications should be rewritten to use the
new MTIO procedures for all magtape device name operations.
.NH 4
MTIO system procedures
.PP
The MTIO interface also includes a number of procedures intended for use
in systems code. These are summarized in the table below.
.XS
mtallocate (mtname)
mtdeallocate (mtname, rewind_tape)
mtstatus (out, mtname)
mtclean (level, stale, out)
.XE
.PP
The only new routine here is \fImtclean\fR. This is called by the
\fImtclean\fR task in the V2.10 SYSTEM package and is used to scan the
magtape status file storage area to delete old magtape position status
files. Prior to V2.10 these files were stored in the user's UPARM
directory, but in V2.10 the files are stored in \f(CW/tmp\fR so that
multiple IRAF sessions will share the same tape position information. A
special task is needed to delete old position files in order to protect
against, e.g., one user deleting another user's device position file while
the device is actively in use.
.NH 4
Magtape driver procedures
.PP
All access to the physical magtape device is via the host level IRAF magtape
device driver ZFIOMT. The driver procedures had to be revised for
V2.10 to add support for the tapecap facility and to accommodate changes in
the way the device position is maintained. The new driver procedures are
summarized below.
.XS
zzopmt (device, acmode, devcap, devpos, newfile, chan)
zzrdmt (chan, buf, maxbytes, offset)
zzwrmt (chan, buf, nbytes, offset)
zzwtmt (chan, devpos, status)
zzstmt (chan, param, value)
zzclmt (chan, devpos, status)
zzrwmt (device, devcap, status)
.XE
.PP
The corresponding KI (kernel interface) routines were also modified to
reflect the new calling sequences. A result of this is that IRAF networking
for magtape devices is incompatible between V2.10 and earlier versions of
IRAF.
.PP
The host level device driver procedures are not normally called directly
in applications code (applications use \fImtopen\fR). Refer to the comments
in the source file \f(CWos$zfiomt.c\fR for additional details.
.NH 3
MWCS interface
.PP
The MWCS interface provides world coordinate system support for the IRAF
system and applications. The main changes in the MWCS interface for V2.10
were bug fixes and semantic changes, e.g. various restrictions having to do
with WCS attributes were removed, new function drivers were added, and so
on. These changes are documented elsewhere in this revisions summary.
.PP
The only interface change affecting MWCS was the addition of the new MWCS
procedure \fImw_show\fR.
.XS
mw_show (mw, fd, what)
.XE
.PP
This is used to dump a MWCS descriptor to the given output file, and is
useful for examining MWCS descriptors while debugging applications.
.NH
Getting Copies of this Revisions Summary
.PP
Additional copies of this revisions summary are available via anonymous ftp
from node \f(CWiraf.noao.edu\fR in the directory \f(CWiraf/v210\fR, or via
email from \f(CWiraf@noao.edu\fR.
|