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 here. [The changelog for the initial development of Funtools, covering the beta releases, can be found here.]
foo.fits[circle(10,10,3),pi=1:5]and
foo.fits[pi=1:5,circle(10,10,3)]both are equivalent to:
foo.fits[circle(10,10,3) && pi=1:5]
pha=4:5&&@foo.regis equivalent to:
pha=4:5 && (circle 1 2 3 || cir 4 5 6)instead of:
pha=4:5 && circle 1 2 3 || cir 4 5 6and the pha filter is applied to both regions.
funcnts foo.fits "circle 512 512 10 # color=red\n circle 512 512 20"
ellipse x y a1 b1 a2 b2 ... an bn [angle] box x y l1 w1 l2 w2 ... ln wn [angle]where at least 2 sets of axis (length) values were specified to form an annulus (i.e. simple ellipses and boxes worked properly). With all of the above conditions met, a region in physical coordinates saw its second length argument converted incorrectly from physical coordinates to image coordinates. In simple terms, this means that funcnts did not process elliptical or box regions in physical coords on blocked images properly. Note that blocking on the command line (e.g. foo.fits[*,*,2]) did work when no LTM/LTV keywords existed in the file.
fundisp -f "colname1=format1 colname2=format2 ..." ...e.g.
fundisp -f "time=%13.2f pha=%3d" ...You also can specify display formats for individual datatypes using the FITS binary table TFORM variables as the keywords:
fundisp -f "D=double_format E=float_format J=int_format etc."e.g.
fundisp -f "D=%13.2f I=%3d" ...The old position-dependent syntax is deprecated.
"[@foo1&&@foo2]" is equivalent to "[pi==1&&pha==2]" "[pha==1||@foo2]" is equivalent to "[pi==1||pha==2]" "[@foo1,@foo2]" is equivalent to "[pi==1,pha==2]"
[@][n]<type>[[poff]][:[tlmin[:tlmax[:binsiz]]]]The [poff] string specifies the offset. For example, a type specification such as "@I[2]" specifies the third (i.e., starting from 0) element in the array pointed to by the pointer value. A value of "@2I[4]" specifies the fifth and sixth values in the array.
int _FunColumnSelect(Fun fun, int size, char *plist, char **names, char **types, char **modes, int *offsets, int nargs);
(status&0b111)==0b001Previously, such masks had to be specified in decimal, octal, or hex.
shape: arguments: ----- --------- BOX xcenter ycenter xw1 yh1 xw2 yh2 ... xwn yhn (angle) BOX xcenter ycenter xwlo yhin xwout yhhi n=[number] (angle) CIRCLE xcenter ycenter r1 r2 ... rn # same as annulus CIRCLE xcenter ycenter rinner router n=[number] # same as annulus ELLIPSE xcenter ycenter xw1 yh1 xw2 yh2 ... xwn yhn (angle) ELLIPSE xcenter ycenter xwlo yhin xwout yhhi n=[number] (angle)
shape: arguments: ----- --------- CPANDA xcen ycen ang1 ang2 nang irad orad nrad # same as panda BPANDA xcen ycen ang1 ang2 nang ixlo iylo ixhi iyhi nrad (ang) # box EPANDA xcen ycen ang1 ang2 nang ixlo iylo ixhi iyhi nrad (ang) # ellipse
New features include:
$ fundisp $S"[x=512&&y=511,512]"incorrectly acted like:
fundisp $S"[(x=512&&y=511)||(y=512)]"instead of:
fundisp $S"[x=512&&(y=511||y=512)]"In general, we recommend use of explicit parentheses.
circle 512 512 .5&&pi==1was not processing the final argument of the region correctly.
funcnts foo.fits.gz "circle 504 512 10"It is no longer necessary to run gunzip and pipe the results to stdin of a funtools program.