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>
|