summaryrefslogtreecommitdiffstats
path: root/funtools/doc/changelog_beta.html
blob: 4e3ccd34c29f6b405ecc25fed5d6e96fd121dbca (plain)
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
<HTML>
<HEAD>
<TITLE>Funtools ChangeLog</TITLE>
</HEAD>
<BODY>
<H2>Funtools ChangeLog</H2>

<P>
This ChangeLog covers both the Funtools library and the suite of
applications. It will be updated as we continue to develop and improve
Funtools.  The up-to-date version can be found <A
HREF="http://hea-www.harvard.edu/RD/funtools/changelog.html">here</A>.

<H2>Beta release 1.0.b28 (06/26/01)</H2>
<UL>

<P>
<LI> In funcnts, removed extra new-lines from the primary table,
inadvertently added in cases where zero-area rows are skipped.

<P>
<LI> Added code to support columns in binary tables that do not have names.

<P>
<LI> Changed the ds9 radial plot so that the radius (x value) for each
plotted point is taken to be the middle of the annulus, (Rin+Rout)/2,
instead of just the inner annulus, Rin.

</UL>

<H2>Beta release 1.0.b27 (06/21/01)</H2>
<UL>

<P>
<LI> Added missing new-lines in funcnts primary tables that did not
have -r switch.

<P>
<LI> Filtering with dynamic shared objects (gcc only) now links the
region code into the shared object, instead of relying on finding the
region code in global space.

<P>
<LI> A few minor changes to column headers in funcnts.
</UL>

<H2>Beta release 1.0.b26 (05/21/01)</H2>
<UL>
<P>
<LI> Fixed funcnts to work properly when the background region
overlaps the source and therefore explicitly excludes the source.
It was simply ignoring the source regions in such a case.

<P>
Added a second DS9 init file, funcnts2.ds9, which contains funcnts
and radial profile routines that work from the image stored in DS9's
memory, rather than the original FITS file. This is useful in cases
where no original FITS file exists (e.g., a temp file was created
by a program and sent to DS9).

<P>
<LI> Fixed funcnts so that region specified with a variable number of
arguments must come last (as is the case with panda and the n=
accelerator). Thus, a region specification such as "pie 504 512 10 20
30 & circle 504 512 10" is now properly an error.  Using "circle 504 512 10
& pie 504 512 10 20 30" instead ensures that the circle is applied to
each pie.

<P>
<LI> Fixed funcnts output of radii/angles when boolean expressions
such as "pie & annulus" are specified.

<P>
<LI> Enhanced funcnts so that -r outputs valid radii for circular regions.

</UL>

<H2>Beta release 1.0.b25 (4/19/01)</H2>
<UL>

<P>
<LI> Added support to funtable to generate a FITS binary table
from an image. By default, a 3-column table is generated, where the
columns are "X", "Y", and "VALUE". For each pixel in the image, a
single row (event) is generated with the "X" and "Y" columns assigned
the dim1 and dim2 values of the image pixel, respectively and the
"VALUE" column assigned the value of the pixel. If the -i
("individual" rows) switch is specified, then only the "X" and "Y"
columns are generated. However the number of rows (events) are written
out for each image pixel is equal to the value of that image pixel(or
1, whichever is larger).

<P>
<LI> Added -z switch to funcnts to display shapes in primary table
that have no area. This is useful when automatic processing assumes
that there are a set number of rows.

<P>
<LI> Reworked how the "$region" column is handled. A "$region" column
can now be added to a table already having a "region" column.  If a
"region" column already exists, the new column will be "region1". If
that exists, we try "region2", etc.

<P>
<LI> Added the header parameters EXTNAME="IMAGE" and EXTVER=1 when an
image extension of created automatically.

<P>
<LI> When funcnts is run with -r, the rad1, rad2, ang1, and ang2 columns
are filled in with "NA" if the shape is not annulus, pie, or panda (instead
of being left blank).

<P>
<LI> Changed funcnts to display arc-sec/pixel instead of degrees/pixel in the
output header.

<P>
<LI> Fixed bug in FunColumnSelect() that prevented a new table from
being created that consists only of new columns.

<P>
<LI> Fixed processing of blank values in FunImageRowGet() (was a SEGV).

<P>
<LI> Fixed fundisp processing of images (SEGV upon completion, trying to
free space only used by tables).

<P>
<LI> Fixed bug in funcalc which left executable in /tmp space if -n
(no execute) was specified.

<P>
<LI>Fixed various bugs processing raw event files, especially on
little-endian machines and reading these files via stdin.

<P>
<LI> Changed rad1, rad2 columns to radius1, radius2 in funcnts.

<P>
<LI> Purified dynamically loaded filter code (since purify now can work
with gcc).

</UL>

<H2>Beta release 1.0.b24 (03/26/01)</H2>
<UL>

<P>
<LI> First release of <B>funcalc</B>, the Funtools table calculator.
funcalc is a calculator program that allows arbitrary
expressions to be constructed, compiled, and executed on columns in a
Funtools table (FITS binary table or raw event file). It works by
integrating user-supplied expression(s) into a template C program,
then compiling and executing the program. funcalc expressions
are valid C statements, although some important simplifications (such
as automatic declaration of variables) are supported.  

Within a funcalc expression, reference is made to a
column of the <B>current</B> row using the C syntax
<B>cur->[colname]</B>, e.g. cur->x, cur->pha, etc. Local scalar
variables can either be defined using C syntax at very the beginning
of the expression, or else they can be defined automatically by
funcalc (to be of type double). Thus, for example, a swap of
columns x and y in a table can be performed using either of the following
equivalent funcalc expressions:
<PRE>
  double temp;
  temp = cur->x;
  cur->x = cur->y;
  cur->y = temp;
</PRE>
or:
<PRE>
  temp = cur->x;
  cur->x = cur->y;
  cur->y = temp;
</PRE>
When this expression is executed using a command such as:
<PRE>
  funcalc -f swap.expr itest.ev otest.ev
</PRE>
the resulting file will have values of the x and y columns swapped.
Many other features are available in funcalc to make table
manipulation easy. See the Funtools program.html documentation.

<P>
<LI> First release of the <B>funtools.ds9</B> set-up file for adding
Funtools analysis programs to the DS9 Analysis menu.  This set-up file
is installed in the same bin directory where Funtools programs are
installed and can be loaded into DS9 from the <B>Load Analysis
Commands ...</B> option of the <B>Analysis</B> menu.  Alternatively,
you can tell DS9 to load this file each time it starts by adding the
file to the <B>Edit</B>-><B>Preferences</B>-><B>Analysis
Menu</B>-><B>Analysis File</B> menu option.

<P>
<LI> Added support for non-integral binning of binary tables. The bincols
specifier on the command line now can take the form:
<PRE>
  bincols=([xname[:tlmin[:tlmax:[binsiz]]]],[yname[:tlmin[:tlmax[:binsiz]]]])
</PRE>
where the tlmin, tlmax, and binsiz specifiers determine the image binning
dimensions:
<PRE>
  dim = (tlmax - tlmin)/binsiz     (floating point data)
  dim = (tlmax - tlmin)/binsiz + 1 (integer data)
</PRE>
These tlmin, tlmax, and binsiz specifiers can be omitted if TLMIN,
TLMAX, and TDBIN header parameters (respectively) are present in the
FITS binary table header for the column in question.  Note that if
only one parameter is specified, it is assumed to be tlmax, and tlmin
defaults to 1. If two parameters are specified, they are assumed to be
tlmin and tlmax.

<P>
<LI> Added "mask=transparent" support to the plist argument in
FunTableRowGet(). If this string is passed in the call's plist
argument, then all events are passed back to the user. This is useful
when FunColumnSelect() specifies "$region" as a column in order to
return the regionid value for each event.  In such a case, events
found in a region have regionid >0, events passing the filter but not
in a region have regionid == -1, events not passing the filter have
regionid ==0.

<P>
<LI> Added FUN_WCS0 to the FUN_WCS option available to FunInfoGet().
The original FUN_WCS option returns WCS Library handle (for use with
Doug Mink's wcssubs library) suitable for use with images, regardless
of whether the data are images or tables. For this structure, the WCS
reference point (CRPIX) has been converted to image coordinates if the
underlying file is a table (and therefore in physical coordinates). The
new FUN_WCS0 structure has not had its WCS reference point converted
to image coordinates. It therefore is useful when passing processing
physical coordinates from a table.

<P>
<LI> Added -G switch to funcnts to print out floating point values
with maximum %.14g precision.

<P>
<LI> Added -l switch to fundisp, which displays the pixels of an image as
a list with X, Y, VAL columns.

<P>
<LI> Added support for images to funhist. The program will create
a histogram of the values found in each pixel, or it can perform
a projection over either axis.

<P>
<LI> All Funtools programs now accept "-" to mean "stdin" or "stdout",
when the io mode is "r" or "w", respectively.

<P>
<LI> Changed behavior of the prec (precision) argument in FunParamPutd()
(and the underlying fitsy routine ft_cardfmt()) so that if the double
value being put is less than 0.1 or greater than or equal to
10**(20-2-prec), then %20.[prec]e format is used, otherwise
%20.[prec]f format is used.

<P>
<LI> Fixed behavior of "merge=replace" in FunColumnSelect() so that if
tlmin/tlmax values are not specified in the replacing column, but are
specified in the replaced column, then the original tlmin/tlmax values
are used in the replacing column.

<P>
<LI> Improved funcnts error-handling when no valid region is specified.

<P>
<LI> Fixed region parsing of '#' comment character so that comments
are terminated by new-lines, but not ';'. This is more intuitive behavior.

<P>
<LI> Fixed region parser so that a region (without parens), followed by
a column expression (e.g., "circle 5 5 1,pha==4") is processed correctly.

<P>
<LI> Fixed funcnts so that the timecorr parameter specified by -t
[timecorr] can be in lower case.

<P>
<LI> Fixed panda region shapes when processing a blocked image. The
number of pies and number of annuli (args 5 and 8) were incorrectly
being divided by the block factor (i.e., they were being treated as
sizes).

<P>
<LI> Fixed bug in funcnts that resulted in slightly smaller
integerized pixel boundaries being used when filtering events. This
does not affect ordinary event filtering(in fundisp, funtable, etc.).
In funcnts (which filters binary table events using image-style pixel
filtering), this bug could result in fewer photons being counted than
is the case when the equivalent image is used.

<P>
<LI> Fixed funcnts to work with raw event files on little-endian machines.

<P>
<LI> Fixed funhist so that it will read data from a pipe.

<P>
<LI> Fixed region parser (and funcnts) so that an include file ending
with a comment stops the comment at the end of the include file.

<P>
<LI> Clarified the meaning of the "," operator (should it be "or" or
"and") between a region and a non-region expression in a filter: if
the second operand in the expression contains a region, the operator
is "or", otherwise it is "and".

<P>
<LI> Fixed bug in funmerge, which was not handling integerization of
negatively-valued physical pixels properly (not actually used in any
known application).

</UL>

<H2>Beta release 1.0.b23 (02/16/01)</H2>
<UL>
<P>
<LI> Fixed funcnts to report area correctly in arc-seconds.

<P>
<LI> Fixed funcnts to report radii correctly when summing.

<P>
<LI> Fixed bug in fundisp: a SEGV when trying to display an ASCII column
from a binary table.

</UL>

<H2>Beta release 1.0.b22 (02/15/01)</H2>
<UL>

<P>
<LI> Funcnts now will automatically output appropriate columns from
the primary table in units of arc-seconds instead of pixels if WCS info
is present. Use -p to force the output to be in pixels.

<P>
<LI> Added qualitative exposure correction to funcnts by means of the switch
"-e source_exp[;background_exp]".  For each region, the average exposure is
calculated and net counts (and background) are divided by the average
exposure. See programs.html for more info.

<P>
<LI> Added qualitative time correction to funcnts by means of the switch
"-t source_time[;background_time]". The net counts (and background) are
divided by this time. See programs.html for more info.

<P>
<LI> Improved funcnts output. For example, column units are displayed
(since surf_bri units now can be cnts/pix**2, cnts/arcsec**2, etc.)

<P>
<LI> Changed funcnts.gnuplot and funhist.gnuplot scripts to funcnts.plot
and funhist.plot, respectively. The new scripts take an argument
such as "gnuplot" or "ds9" and output data appropriate for each
target. Also enhanced funcnts.plot so that it senses the axis units
automatically.

<P>
<LI> Fixed bug in funcnts when handling regions whose centers are out of the
image. Processing often resulted in BUS ERROR or zero counts, and it took
forever to reach those results

<P>
<LI> Fixed bug in FunImagePut() when outputting float data on
little-endian machines (PCs/Dec Alpha) -- an erroneous error was
signaled trying to convert from native to IEEE before writing.

<P>
<LI> Fixed bug in fundisp when displaying the mask of a double/float
image using the mask=all option.

<P>
<LI> Fixed bug in fitsy/headimage/ft_imageloadhead(fits), in which the
default value for LTV[1,2] was incorrectly set to 1.0, not 0.0. This
means that region physical coordinates applied to FITS images and
arrays that did not have LTM/LTV keywords were 1 pixel off.

<P>
<LI> Fixed obscure bug in region circle processing when a block factor
is specified in the section command but the circle has radius less
than the block.

<P>
<LI> Fixed bug in FunImageGet which was returning the full image in
cases where a region was specified but no image pixels were in the
region.  An empty image is now returned.
</UL>

<H2>Beta release 1.0.b21 (02/01/01)</H2>
<UL>

<P>
<LI> In funcnts, added ability to specify a separate background file.
When using a separate background file, the background area will be
normalized by the ration of the pixel sizes of the two files, if
requisite WCS info is available.

<P>
<LI> In funcnts, added -r switch to output radii (and angle)
information. This is useful with annulus and panda shapes when
plotting radial profiles.  An example plot script, funcnts.gnuplot, is
available for use with gnuplot  (3.7 and higher):
<PRE>
  funcnts ... | funcnts.gnuplot
</PRE>

<P>
<LI> First version of the funhist program, which creates a 1D
histogram by binning the specified column in a binary table. The
tabular output can be plotted using funhist.gnuplot:
<PRE>
  funhist snr.ev x | funhist.gnuplot
</PRE>

<P>
<LI> Added additional error messages to funcnts when invalid binning
parameters are found for one or more binary table binning columns.

<P>
<LI> Fixed bug in FunImagePut() which sometimes occurred when
dimensions were passed in the calling sequence. If, in addition, a
reference handle was passed in the FunOpen() call, then the output
dimensions are erroneously taken from the reference file, not the
passed dimensions.

<P>
<LI> Fixed bug in filter lex code (filt.l) in which yyrestart was
being called incorrectly with the string to be parsed as the argument
(should be NULL).

<P>
<LI> Fixed bug in filter code in which the Sun cc compiler was creating
a useless .o file in the working directory.

<P>
<LI> Fixed bug in region parser which made it impossible to specify
angles with a 'd' or 'r' suffix unless WCS info was in the file. (The
use of 'd' or 'r' with angle is independent of WCS but the check was
there anyway.)

</UL>

<H2>Beta release 1.0.b20 (11/29/00)</H2>
<UL>

<P>
<LI> Fixed a serious bug in which exclude regions were being ignored 
when multiple annuli were specified. That is, in a region specification
such as:
<PRE>
  annulus 512 512 0 100 n=4; -circle 510 510 20
</PRE>
or
<PRE>
  annulus 512 512 0 25 50 75 100; -circle 510 510 20
</PRE>
the excluded region was not being sensed properly. Note that
single regions did work properly with exclude regions.

<P>
<LI> Optimized funcnts so that the time for processing an event list
(binary table) is no longer proportional to the number of pixels in
the image. The unoptimized code was taking forever with Chandra ACIS
images (8192**2 pixels), even with relatively few events.

<P>
<LI> Fixed bugs that gave incorrect answers when image regions were
combined with image sections.

<P>
<LI> Fixed bug in parsing image section of the form: "foo.fits[*,6:9,2]",
i.e. the default ("*") x dimensions, followed by specified y dimensions.

<P>
<LI> Added -g option to funcnts to change some output formats from
12.3f to 12.3g to accommodate display of very small numbers.
</UL>

<H2>Beta release 1.0.b19 (11/21/00)</H2>
<UL>
<P>
<LI> Fixed bug in filter code that caused a SEGV on Solaris machines
when the first specified spatial region is an exclude region. Our
user-supplied qsort/compare algorithm was confusing the Solaris qsort()
routine, causing it to SEGV by trying to process a record prior to the
beginning of the passed array of records.
</UL>

<H2>Beta release 1.0.b18 (11/13/00)</H2>
<UL>
<P>
<LI> Fixed bug in handling bitpix=-32 (single float) images.

<P>
<LI> Fixed gio gskip routine to better handle skip of 0 bytes.
</UL>

<H2>Beta release 1.0.b17 (11/10/00)</H2>
<UL>

<P>
<LI> Fixed working of $REGION keyword in funtable.

<P>
<LI> Removed FunFlush() from end of funtable (it was redundant).

<P>
<LI> Fixed bug in gopen() handling of "pipe:".

<P>
<LI> Fixed bug in gseek() where pipes, streams, and sockets were
not skipping bytes properly (that can do skips, but cannot do other
sorts of seek).

</UL>

<H2>Beta release 1.0.b16 (10/23/00)</H2>
<UL>

<P>
<LI> Added -s switch to funcnts to support display of summed results 
(as well as individual results for each region), i.e. each row in the
summed bkgd-subtracted table contains the sum of counts and areas from
previous rows.

<P>
<LI> Added -f [format] switch to fundisp to allow control over the
display format for each data type.

<P>
<LI> Fixed bug in which regions could be incorrectly re-ordered.  This
was a problem with annular ellipses and rectangles created by ds9 and
then used in funcnts (the only program where the order of the regions is
important).
</UL>

<H2>Beta release 1.0.b15 (10/11/00)</H2>
<UL>

<P>
<LI> Changed the names of routines FunEventsGet() and FunEventsPut()
to FunTableRowGet() and FunTableRowPut(), respectively.  The old names
are still valid (using #define in funtools.h), so no code change is
required.

<P>
<LI> Changed funevents program name to funtable, in line with API changes.

<P>
<LI> Renamed FunInfoGet/Put() parameter FUN_EVSIZE to FUN_ROWSIZE, in
order to reflect change from use of "events" to use of "row" in
funtools binary table support. The old name is still supported as
an alias.

<P>
<LI> Completed first version of funmerge program to merge FITS binary tables.

<P>
<LI> Fixed bug in line region shape that was causing a SEGV with event data.

<P>
<LI> Fixed minor compiler warnings using "gcc-Wall".

<P>
<LI> Added the ability for FunOpen() to open a list of event files and
read events from this list synchronously or asynchronously. This
facility is part of an experimental set of parallel processing
techniques that are being added to funtools.  Documentation will be
forthcoming when we know which techniques have value!
</UL>

<H2>Beta release 1.0.b14 (9/22/00)</H2>
<UL>

<P>
<LI> Added first version of funmerge program to merge FITS binary tables.

<P>
<LI> Changed the output format of funcnts so that the main results
(background-subtracted table) are displayed first. This means that the
result columns always start at line 4 in the file (after a 1-line
comment and a 2-line header) and end at the first blank line. The
fixed format makes it easier for programs such as sed to extract
results for further processing. For example:

<PRE>
 csh> cat fun.sed
 1,/---- .*/d
 /^$/,$d

 csh> funcnts snr.ev[pha==1] "annulus 512 512 0 200 n=8" | sed -f fun.sed
   1       49.000     7.000        0.000     0.000      1941    0.025    0.004
   2       91.000     9.539        0.000     0.000      5884    0.015    0.002
   3      129.000    11.358        0.000     0.000      9820    0.013    0.001
   4      159.000    12.610        0.000     0.000     13752    0.012    0.001
   5      176.000    13.266        0.000     0.000     17652    0.010    0.001
   6      183.000    13.528        0.000     0.000     21612    0.008    0.001
   7      137.000    11.705        0.000     0.000     25528    0.005    0.000
   8      198.000    14.071        0.000     0.000     29420    0.007    0.000
</PRE>

<P>
<LI> Fixed bug in row# processing in which all range was ignored if
lo range value was 1 (e.g., row#=1:7).

<P>
<LI> Fixed bug in event header processing in which the multiple
instances of keywords HISTORY, COMMENT, and CONTINUE were not all
being copied from the old to the new header (e.g. in funevents).

<P>
<LI> Fixed processing of ARRAY() and EVENTS() specifiers in FunOpen().

<P>
<LI> Fixed 'make clean' directive so that it also cleans funtools subdirs.
</UL>

<H2>Beta release 1.0.b12 (9/5/00)</H2>
<UL>

<P>
<LI> Improved the performance of panda regions so that the funcnts
"wall time" now is proportional to the size of the panda region, not
the size of the image. (The latter is the case with the pie shape; use
of panda is recommended over pie.) This means that it is possible to
run funcnts on an ACIS file at zoom 1 (8192x8192) in seconds rather
than (tens of) minutes.

<P>
<LI> Added support for INET sockets to gio and hence, to funtools.
This means that you can read/write from/to sockets on other machines,
creating a distributed pipeline. For example:
<PRE>
  on m1:  funevents foo.ev m2:1428
  on m2:  funevents :1428 m3:1428
  on m3:  funevents :1428 ...
</PRE>
etc. Tests indicate that this is faster than pipes on a single
machine, once the CPU is saturated on that machine. (But note that it
is not faster until the CPU is saturated, due to the efficiency of
Unix pipes and the I/O wait time on non-saturated CPUs.) This new
facility implements the parallel processing technique called "process
decomposition" for pipelines, in which a pipeline process is run on
several machines at once, with different machines handling separate
parts of the pipeline process.
<P>
NB: socket support requires that the libraries:
<PRE>
  -lsocket  -lnsl
</PRE>
be added to the Solaris link line.

<P>
<LI> Added support for the row#=lo:hi keyword to process specific rows
in a FITS binary table. For example:
<PRE>
  funevents "test.ev[row#=3:8]" stdout ...
or
  funevents "test.ev[row#=(3,8)]" stdout ...
</PRE>
will only process rows 3 to 8 (inclusive) of the test.ev file. Along
with image section specification, use of the row#= keyword implements
the parallel processing technique called "data decomposition", in
which several copies of a single program operate on different parts of
a single data file.

<P>
<LI> Added guard code to image region processing to catch illegal event
values.

<P>
<LI> Fixed bug when writing FITS image extensions in which dim1, dim2,
and bitpix were being output as 0.

<P>
<LI> reversed the y row order of displayed images in fundisp, so that pixel
(1,1) is in the lower left corner, as is the case for ds9 image display.
</UL>

<H2>Beta release 1.0.b11 (8/10/00)</H2>
<UL>

<P>
<LI> Fixed annulus accelerators and panda regions -- again.  Old
problems (from the original implementation) were uncovered related to
the use of these shapes in boolean expressions. Documented an old
restriction that panda and accelerators must be put last in a boolean
expression and added code to signal an error if they are not placed last.

<P>
<LI> The behavior of the point shape was changed so that multiple x,y
pairs in a single shape specifier now are assigned different region
ids. This makes the behavior of points and annuli consistent with one
another.
</UL>

<H2>Beta release 1.0.b10 (8/08/00)</H2>
<UL>

<P>
<LI> Fixed annulus accelerators and panda regions.  These were
broken when dynamic loading was implemented.

<P>
<LI> Fixed a bug in the event filter body code (i.e., the basis for
the slave filter program). Reading the data sometimes incorrectly
calculated the number of events being passed -- which only showed up
occasionally on the Alpha!
</UL>

<H2>Beta release 1.0.b9 (8/03/00)</H2>
<UL>
<P>
<LI> Removed compilation of some extraneous routines from wcs library.
Also renamed wcssubs directory to wcs.

<P>
<LI> Added calls to hlength() before wcsinit(). This is necessary in
ds9 (and is a safeguard in other programs) because once hlength() is
called before any invocation of wcsinit(), it must always be used.

<P>
<LI> Fixed bug in filter code in which CTYPE1 and CTYPE2 param values
were not being passed to wcsinit() as valid FITS strings: the single
quotes were missing.

<P>
<LI> Fixed a bug in fitsy in which the card buffer was not being
null-terminated properly when a "card insert" call reallocated space
for more cards.

<P>
<LI> Added protective code so that one cannot set FILTER_PTYPE to
"dynamic" if dynamic filter objects are not available.

<P>
<LI> Ported to Debian Linux, which (believe it or not) required
removal of extraneous strdup() and strstr() declarations in the code
(apparently these are macros in that version of Debian gcc, so you
cannot declare them).
</UL>

<H2>Beta release 1.0.b8 (8/01/00)</H2>
<UL>

<P>
<LI> Added new filter ptype ("contained"), which builds a separate
process by compiling both the main routine and the region code.  This
is different from the "process" ptype, which compiles the main
routine, but links in pre-compiled region code (in order to make the
program build more quickly).  It is needed by ds9 so that the latter
does not have to keep track of the compiled region code module.
</UL>

<H2>Beta release 1.0.b7 (7/25/00)</H2>
<UL>

<P>
<LI> Changed filter code so that, in simple cases, we can access the
contents of a file. This is needed so that funcnts can work properly in one
oft-used case, i.e., if the file foo contains:
<PRE>
  circle 5 5 1
  circle 4 4 1
</PRE>
then:
<PRE>
  funcnts foo.fits @foo
</PRE>
now will display the 2 regions in its output, instead of displaying the
near useless "@foo". This only works for simple cases where only a file 
is input, not in odd combinations like:
<PRE>
  funcnts foo.fits "@foo,circle 1 1 1"
</PRE>

<P>
<LI> Added programming tutorial and enhanced the programming
reference documentation.

<P>
<LI> Ported to Windows via the Cygwin environment from
RedHat.  We tested on an NT box, which has decent multi-tasking
support. Whether it works on Windows95 is unknown.

<P>
<LI> Upgraded WCS libraries to 2.8.3.

<P>
<LI> Ported to new and strict SGI C compiler, which uncovered
lots of unused variables, etc.

<P>
<LI> Fixed FunParamPut status return.
</UL>

<H2>Beta release 1.0.b6 (7/15/00)</H2>
<UL>

<P>
<LI> Ran Purify with each high level program and each funtest
program.
<P>
<LI> Changed behavior of merge=update option of
FunColumnSelect() so that the update of the user column value only
takes place if the user mode has "w" in it.  Previously, merge=update
overrode the mode flag and always updated the user value.  Note that
all calls to FunColumnSelect with merge=update must change "r" to "rw"
in order to have that user column merged. (The merge=replace already
was checking the mode flag -- the fact that they were doing different
things is a bug.)
<P>
<LI> Added ability to FunOpen extensions by HDU name. (I
thought I had already done this!)
<P>
<LI> Fixed bug that was adding a NULL table at the end of
most binary table files (i.e., those that were not copying the rest of
the input file).
<P>
<LI> Re-ported to Alpha. The problem found most often was the
casting of pointers to ints when doing pointer calculations, i.e.:
<PRE>
  char *s, *t;
  n = ((int)s - (int)t);
</PRE>
which is invalid on the 64-bit Alpha. Instead use:
<PRE>
  char *s, *t;
  n = (s - t);
</PRE>
Also broadened the check for use of dlopen in configure to match Alpha's
library configurations (On Alpha, dlopen is in libc).

<P>
<LI> Changed FunColumnActivate() so that funtools will
process columns in the sorted order specified by that routine. Thus:
<PRE>
  fundisp foo.ev "time y x"
</PRE>
will display columns in that order. 

<P>
Sorting does not take place if the activate list contains only exclude
columns (since there is nothing to sort). Also, you can turn off
sorting altogether (mimicking the old behavior) by calling
FunColumnActivate() with a "sort=false" in the plist argument:
<PRE>
  FunColumnActivate(fun, "y x", "sort=false");
</PRE>
or by adding "sort=false" to the activate string itself:
<PRE>
  # by default, its sorted
  fundisp $E "time y x"
               TIME       Y       X
   ---------------- ------- -------
             6.8500      -7      -7
             6.8600      -7      -7
</PRE>
while:
<PRE>
  # turn off sorting
  ./fundisp $E "time y x sort=false"
         X       Y             TIME
   ------- ------- ----------------
        -7      -7           6.8500
        -7      -7           6.8600
        -7      -7           6.8700
</PRE>
</UL>

<H2>Beta release 1.0.b5 (7/8/00)</H2>
<UL>

<P>
<LI> Changed all FunParamSet calls to FunParamPut, to make the
naming consistent with FunImagePut, FunEventsPut, etc.

<P>
<LI> Fixed bugs preventing tlmin/tlmax from being changed by the
user in binary tables. Also tlmin/tlmax are now written out using a
data type that matches the data type of the respective column.

<P>
<LI> Extended filter syntax to allow "," as separator between
filename and filters (as well as brackets), i.e.:
<PRE>
  foo.fits,events  # event extension
  foo.fits,pha==1  # filter on default extension
  foo.fits,1       # first extension
</PRE>
Note that all but simple expressions will need to be quoted because
of the shell:
<PRE>
  foo.fits,pha==1&&pi==2  # & tells shell to run in bkgd
  foo.fits,pha==1||pi==2  # similar problems with pipes
  foo.fits,circle(1,2,3)  # parens are grabbed by shell
</PRE>

<P>
<LI> Fixed configure so that --with-lib is no longer necessary
to generate a single funtools.a library. Removed this argument from
saoconfig. Note that:
<PRE>
  ./configure
</PRE>

now works properly again, so saoconfig should not be used.

<P>
<LI> Changed FunFlush() mode argument (single characters) to a
plist argument (keyword arguments). In particular,
<PRE>
  FunFlush(fun, "C");
</PRE>
is now:
<PRE>
  FunFlush(fun, "copy=remaining");
(or FunFlush(fun, "copy=remainder"); )
</PRE>

This syntax extension allows FunFlush to support the copy of the
extension associated with the reference handle, which allows one to
copy any extension from an input file to an output file:
<PRE>
  /* open a new input extension */
  ifun = FunOpen(...);
  /* make this new extension the output reference extension */
  FunInfoPut(ofun, FUN_IFUN, &ifun, 0);
  /* copy the current reference extension to output */
  FunFlush(ofun, "copy=reference");
</PRE>

<P>
<LI> Fixed bugs in region parser that caused pure floating
point positions (i.e., numbers w/o format characters) always to be
interpreted as pixels.  Also fixed galactic and ecliptic conversions.
</UL>

<HR>
<P>
<A HREF="./help.html">Index to the Funtools Help Pages</A>

<HR>
<A HREF="./help.html">Index to the Funtools Help Pages</A>

<H5>Last updated: November 17, 2005</H5>

</BODY>
</HTML>