******************************************************************************** RELEASE NOTES FOR HEASOFT 6.13 December 21, 2012 ******************************************************************************** The HEASoft 6.13 release is primarily driven by updates to the Swift mission software, but also includes updates to other packages which have been revised to mirror the current development versions in use at the HEASARC. As before, configuration-related changes thoughout the package means that users who already have HEASoft v6.x.x installed will need to completely replace their software installation; there is no clean way to simply overlay this new release or to update an existing installation. ******************************************************************************** CFITSIO ******************************************************************************** - DEVELOP: Fixed flaw in the way logical columns (TFORM = 'L') in binary tables were read which caused an illegal value of 1 in the column to be interpreted as a 'T' (TRUE) value. - Version 3.32: * Extended the column filtering syntax in the CFITSIO file name parser to enable users and scripts to append new COMMENT or HISTORY keyword into the header of the filtered file (provided by Craig Markwardt). For example, fcopy "infile.fits[col #HISTORY='Processed on 2012-10-05']" outfile.fits will append this header keyword: "HISTORY Processed on 2012-10-05". * Small change to the code that opens and reads an ASCII region file to return an error if the file is empty. * Fixed obscure sign propagation error when attempting to read the uncompressed size of a gzipped FITS file. This resulted in a memory allocation error if the gzipped file had an uncompressed file size between 2^31 and 2^32 bytes. Fix supplied by Gudlaugur Johannesson (Stanford). - Version 3.31: - Enhanced the CFITSIO column filtering syntax to allow the comma, in addition to the semi-colon, to be used to separate clauses, for example: [col X,Y;Z = max(X,Y)]. This was done because users are not allowed to enter the semi-colon character in the on-line Hera data processing system due to computer security concerns. - Enhanced the CFITSIO extended filename syntax to allow specifying image compression parameters (e.g. '[compress Rice]') when opening an existing FITS file with write access. The specified compression parameters will be used by default if more images are appended to the existing file. - Modified drvrfile.c to do additional file secrity checks when CFITSIO is running within the HEASARC's Hera software system. In this case CFITSIO will not allow FITS files to be created outside of the user's individual Hera data directory area. - Fixed an issue in fpack and funpack on Windows machines, caused by the fact that the 'rename' function behaves differently on Windows in that it does not clobber an existing file, as it does on Unix platforms. - Fixed bug in the way byte-swapping was being performed when writing integer*8 null values to an image or binary table column. - Added the missing macro definition for fffree to fitsio.h. - Modified the low level table read and write functions in getcol*.c and putcol*.c to remove the 32-bit limitation on the number of elements. These routines now support reading and writing more than 2**31 elements at one time. Thanks to Keh-Cheng Chu (Stanford U.) for the patch. - Modified Makefile.in so that the shared libcfitsio.so is linked against pthreads and libm. - Version 3.30: Enhancements * Added new routine called fits_is_reentrant which returns 1 or 0 depending on whether or not CFITSIO was compiled with the -D_REENTRANT directive. This can be used to determine if it is safe to use CFITSIO in multi-threaded programs. * Implemented much faster byte-swapping algorithms in swapproc.c based on code provided by Julian Taylor at ESO, Garching. These routines significantly improve the FITS image read and write speed (by more than a factor of 2 in some cases) on little-endian machines (e.g., Linux and Microsoft Windows running on x86 PCs) where byte-swapping is required. This has no effect on big-endian machines (e.g., Macs). Even faster performance can be achieved in some cases by invoking the new "--enable-sse2" or "--enable-ssse3" configure options when building CFITSIO on machines that have CPUs and compilers that support the SSE2 and SSSE3 machine instructions. * Added additional support for implicit data type conversion in cases where the floating point image has been losslessly compressed with gzip. The pixels in these compressed images can now be read back as arrays of short, int, and long integers as well as single and double precision floating-point. * Modified fitsio2.h and f77_wrap.h to recognize IBM System z mainframes by testing if __s390x__ or __s390__ is defined. * Small change to ffgcrd in getkey.c so that it supports reading a blank keyword (e.g., a keyword whose name simply contains 8 space chracters). Bug Fixes * Fixed a bug in imcomp_decompress_tile that caused the tile-compressed image to be uncompressed incorrectly (even though the tile-compressed image itself was written correctly) under the following specific conditions: - the original FITS image has a "float" datatype (R*4) - one or more of the image tiles cannot be compressed using the standard quantization method and instead are losslessly compressed with gzip - the pixels in these tiles are not all equal to zero (this bug does affect tiles where all the pixels are equal to zero) - the program that is reading the compressed image uses CFITSIO's "implicit datatype conversion" feature to read the "float" image back into an array of "double" pixel values. If all these conditions are met, then the returned pixel values in the affected image tiles will be garbage, with values often ranging up to 10**34. Note that this bug does not affect the fpack/funpack programs, because funpack does not use CFITSIO's implicit datatype conversion feature when uncompressing the image. ******************************************************************************** CFITSIO PERL MODULE ******************************************************************************** Update to version 1.09 of the CFITSIO Perl module: http://hea-www.harvard.edu/~rpete/cfitsio/ 2012-07-27 * CFITSIO.pm: $VERSION = '1.09'; * CFITSIO.xs: sync with cfitsio 3.31 cfitsio v3.31 added a missing prototype for function fffree which conflicted with the existing definition in CFITSIO.xs. ******************************************************************************** CCFITS ******************************************************************************** - Fixed a couple of problems with the FITS::addTable function. It was not allowing a new table with a pre-existing HDU name even when the version number was different. Also it was not writing the EXTVER keyword when the version number was > 1. ******************************************************************************** HEASP ******************************************************************************** Library for manipulating spectra and responses, including a Python interface. A detailed guide to the library and its use when writing programs or using Python is available in $HEADAS/../heacore/help/headas_guide.pdf. New in this release: - Added unit conversions through calcXfactor and calcYfactor routines. - Added a global SPerrorStack to improve error reporting. Entries are added to the stack using SPreportError and can be retrieved using SPgetErrorStack which returns a string. SPclearErrorStack resets the stack. - Added modifications to all classes to handle case where user writes an extension of some type into a file which already contains an extension of the same type. Now writes the new extension with an EXTVER keyword set to one more than the highest EXTVER of other extensions of the same type in the file. - Made checkCompatibility routines consistent across classes and added a check for units. ******************************************************************************** APE / XPI (Parameter Interface Libraries) ******************************************************************************** - Correct bug in which parameter values assigned a value of whitespace were instead inheriting parameter values from farther to the right on the command line, i.e. par2=" " parfive="yes" was assigning "yes" both to par2 and parfive. - Preserve quoted whitespace (only) in parameter assignments, e.g. for the separator parameter in ftlist. - New APE-based version of pquery to replace old XPI-based version. This fixes broken behavior in the following FTOOLS Perl scripts: FUTILS: fmodtab; TIME: day2time, time2day; HEASARC: makeregion, gisxspec, pspcxspec, wgaxspec. - Fix XPI parameters tchat and lchat (terminal and log chatter) used in the following tasks: EXOSAT: cmadead, exoleuv, exomerge; FIMAGE: fvec2img; HEAO1: a2lcurve, a2source, dsdlcurve; HEASARC: nh, sky2xy, xy2sky; OSO8: osopha, osorat; ROSAT: abc, bct, utc.par(abc); XIMAGE: mkcolor, mkhratio; XRONOS: autocor, crosscor, earth2sun, efold, efsearch, lcmath, lcstats, lcurve, listdata, powspec, timeskew. ******************************************************************************** ATTITUDE ******************************************************************************** - atFunctions v3.3 (2012.11.22): Bug fix in atSetElement(), atSetElement2(), atSetElement3(), in the equation calculating "zzbar", the first time derivatitive of the mean anomaly. The following constants have also been updated/corrected: Original Revised/corrected -------------------------------- static double gravc = .0743666; .0743668 static double j2 = .00108264; .001082626 static double dycon = 398599.; 398600. static double aj2 = .001082628; .001082626 static double aj4 = -2.12e-6; -1.616e-6 static double eradi = 6378.16; 6378.137 A brief comparison of output between the original code and the revised code shows that the changes are small, with errors of the order 1-2 km, at the largest. The biggest changes resulted not from the bug fix - a simple sign change - but from updating/fixing the constants. Comparison of output: Satellite [X, Y, Z] (km) ----------------------------------------------------------------------------------------------- X Y Z bug-fixed_code: mjd= 56200.0000000000 5182.82270127579 -3213.41407482482 3288.36194675555 original_code : mjd= 56200.0000000000 5182.50469061843 -3213.81259433846 3288.47385908001 bug-fixed_code: mjd= 56220.0000000000 5263.44591867794 -2967.04673975258 -3408.89612834825 original_code : mjd= 56220.0000000000 5262.34360993661 -2969.55376653281 -3408.41672189663 bug-fixed_code: mjd= 55555.1234500000 4725.02005822229 4055.33660081729 3078.72232915383 original_code : mjd= 55555.1234500000 4727.31468669830 4053.32307841280 3077.85219344827 ----------------------------------------------------------------------------------------------- Mean motion / nbar (radians per day) ------------------------------------------- bug-fixed_code: nbar = 94.51009698425256 original_code : nbar = 94.50989651601652 bug-fixed_code: nbar = 94.51152172197288 original_code : nbar = 94.51132124659411 bug-fixed_code: nbar = 94.33024342746587 original_code : nbar = 94.33004379113659 ------------------------------------------- - aberrator: Update to task version 1.1. Add 'orbext' parameter to support NuSTAR orbit extension named 'ORBIT'. Add 'attcol' parameter to support either POINTING or QPARAM as input (previously was only POINTING). - aspcorr: Pass through tristarid parameters for catalog cross-referencing (matchtol, uncount, unmag). - newmakefilter: Improve loss of precision on J (32 bit unsigned integer) columns with large values. - tristarid: Allow disabling catalog cross-referencing by passing matchtol < 0 and uncount < 0. Bug fix: an externally supplied quaternion should not be ignored when there are insufficient sources (3+) to find a solution by triplet matching. ******************************************************************************** PLT ******************************************************************************** - Prevent infinite loops when an input plt command file does not exist. ******************************************************************************** PGPLOT ******************************************************************************** - Increase max output filename length to 128 characters (input can be longer). ******************************************************************************** FUTILS ******************************************************************************** - fmodhead: Update to allow handling of HIERARCH keywords. - ftabcopy: Invert order of Aw to wA in TFORM keyword for binary table output. - fverify: Removed the overly-stringent test that the WCSAXESa keywords must precede any other WCS keyword. Improved text of error messages about illegal characters in keyword name and illegal logical column values. Fixed uninitialized variable bug that affected checks on the WCSAXES keyword. ******************************************************************************** HEATOOLS ******************************************************************************** - ftcreate: Fixed bug on 64-bit Linux which caused extraneous TNULL keywords. - ftverify: Removed the overly-stringent test that the WCSAXESa keywords must precede any other WCS keyword. Improved text of error messages about illegal characters in keyword name and illegal logical column values. Fixed uninitialized variable bug that affected checks on the WCSAXES keyword. ******************************************************************************** HEAGEN ******************************************************************************** - barycorr: * Add command line option "-clockfile" which allows explicit designation of a clock offset correction file. * Add command line option "-dtmaxclock" which specifies the maximum time difference in seconds before a clock recalculation takes place. * Clock offset correction amount is now recalculated if -dtmaxclock is set to >0; AND time changes by more than -dtmaxclock value; OR time crosses midnight boundary; this accomodates rapidly changing NuSTAR clock over long observations. * Optimize the orbit code * Add NuSTAR as mission supported by barycorr (Andrew Davis, NuSTAR project) * Add nCC nustar clock correction * Note that the clock correction code is only invoked once at the start of the task - for any mission - so it does not capture clock offset variations during an observation. * Refactor the nCC code into clock file reader, calculator and driver; could be reused for Swift. - flx2xsp: Relocated from the ftools/heasarc package and rewritten. This task creates spectra and response files for use in XSPEC from an input text file of fluxes and errors. The new version adds two parameters 'xunit' and 'yunit' to allow multiple possible units for energy/wavelength and flux. - (NEW) flx2tab: Read an input text file with one or more model spectra and convert to an XSPEC table model file. - (NEW) mkfiltrsp: Read an input text with a filter response to make a single channel response matrix. - rgsrmfsmooth: Replacement version of task previously located in the ftools/spectral directory. Smooths an XMM RGS response matrix for an extended source. - (NEW) sdss2xsp: Program to convert SDSS FITS files into XSPEC PHA and RSP. Assumes that the SDSS resolving power is 2000 (sigma). - libgeomag: New library comprised of routines in geomag.f, which was relocated from the attitude task "prefilter" to make the routines available to other missions. - SwiftClock.pm: Fixed minor bug in extrapolating in ASCII file (was ignoring last entry). - swco.dat: ******************************************************************************** HEASARC ******************************************************************************** - flx2xsp, raysmith and mekal tasks relocated to heagen and Xspec components. ******************************************************************************** EXTRACTOR ******************************************************************************** Speed-up modification of fixwmp: decides whether a WMAP bin is in the region by checking whether its center is in the region instead of checking every pixel in the bin and looking for one which lies in the region. For the case of no TLMIN/MAX changed the default upper grade to GMAXSIZE-1 which is currently 255. This was a change from the arbitrary value of 25 which caused a problem for NuSTAR since they take grades up to 26 and currently have no TLMIN/MAX in their event files. ******************************************************************************** XSELECT ******************************************************************************** - Fixes for the problem that xselect has a tendency to go into an infinite loop if a command is given the wrong argument. Now it nicely passes the user back to the main prompt so they can try again. - Improved plot device code so that filenames can be given for appropriate devices (e.g. "set device myplot.ps/cps"). ******************************************************************************** XSPEC ******************************************************************************** Version 12.8.0: New features: - Parallel-processing capability for specific tasks has been added by way of the new "parallel" command. This allows the user to set a maximum number of processes to spawn when running certain XSPEC commands. Currently the options for parallel-processing are limited to use with the "fit" and "error" and commands, though we plan to implement more in the near future. This first implementation is considered to be a BETA release, and we look forward to hearing your comments and suggestions. - XSPEC now distinguishes between the 'fit' statistic and the 'test' statistic. The fit statistic is used to find the best-fit parameter values and errors while the test statistic is used to provide a goodness-of-fit. Consequently, the goodness command now uses the test statistic. Separating these two classes of statistic has allowed us to add a number of new test statistics. These include Kolmogorov-Smirnov and the related Anderson-Darling and Cramer-von Mises. Also new are the runs statistic, based on the number of runs of consecutive positive (or negative) residuals, and the Pearson Chi-Square (pchi) statistic, Pearson's original test statistic. - The basic Levenberg-Marquardt fit algorithm has undergone a number of changes. The most visible is an additional column in the output during the fit. |beta|/N is the norm of the vector of derivatives of the statistic with respect to the parameters divided by the number of parameters. At the best fit this should be zero so provides another measure of how well the fit is converging. |beta|/N can also be used as the criterion to stop the fit instead of the statistic delta although this is still considered experimental. Other internal changes to the fit algorithm are to treat the first iteration as a special case where only normalizations are allowed to change and to add the option of using delayed gratification, which can speed up convergence. - New models: compmag, comptb, rgsxsrc. The latter is reinstated from it use in XSPEC v11. - New plotting command "plot goodness", for plotting a histogram of the most recent "goodness" simulation. - New tclout option "goodness sims" . - Added the option of using the Goodman-Weare algorithm instead of Metropolis-Hastings when using the chains command to run MCMC. - Added the Whittle statistic for fitting models to power density spectra. - If a data file is read which has RESPFILE="[]" then the response extensions (MATRIX, EBOUNDS) are read from the same file. - Added support for a new type of model component: a mixing component which operates on the model pre-multiplied by the effective area. This is similar to the pile-up model type but allows for a models which require mixing between multiple spectra. - Table model files can now have interpolated and additional parameters intermixed provided that additional parameters are indicated by METHOD=-1 in the PARAMETERS extension. Enhancements previously released as patches to 12.7.1: - The "plot chain" has a new "thin" option for thinning the display of chain points. - Added a "tclout ignore" option for easy retrieval of currently ignored channels. Similar capability added to PyXspec's Spectrum class. All bug fixes to v12.7.1 released as patches are included in v12.8.0. In addition the following problems have been corrected: - The eqpair model used wrongly-sized arrays when multiple spectra were used with RMFs having varying numbers of photon energy bins. Eqpair (plus eqtherm and compth) also needed a new default value for its optical depth parameter, which fixes the problem if parameter 4 is zero. - A fit parameter which started close to the minimum/maximum could under some circumstances be incorrectly pegged at the maximum/minimum. - When the "error" command was run on a model with soft limits (ie. soft limits for some parameters set to a narrower range than hard limits), and the best fit value fell within the soft limit region, the displayed differences (in parentheses) were not consistent with the reported ? limits. - Problem occurred in apec model when zero width lines were in the final energy bin. - Fix to a potential normalization problem occurring in Lorentz model with low-energy large-width lines. - When running initpackage/lmod from PyXspec on certain Linux builds, local models calling functions in XSPEC's xslib library producing unresolved symbol link errors. New tools: - "raysmith" and "mekal" tasks relocated here from the ftools/heasarc module, and "kbmodels" task relocated here from the ftools/spectral module. ******************************************************************************** XSTAR ******************************************************************************** Version 2.2.1bn13 - updates since HEASOFT 6.12 include: - Changes to bring xstar221bk --> xstar221bn: - elimination of big ajis rate matrix - new r matrix data for al, ni - larger data structures - Increase length of ERRMSG to handle sprintf in Display_FITS_ParmTable() when number of values is large (kInterpolated case). - Fixed error in heatt.f which turned off rrc luminosity. - Changes to provide better calculation of optically thick models: Re-introduction of the tmpp factor in the transfer equation integration. Refinement of 2 sided clouds and inclusion of 2 sided escape. - Changes to allow writing of step-by-step rrc emissivities (in routine fstepr3.f) Plus, expand maximum size of energy array to 10^6. - Updates to allow 10^6 energy points, turbulent and thermal line widths to add in quadrature, Al II UV resonance line. - Fix segfault occurring when XSTARDEBUG was not set in the environment. ******************************************************************************** TIME ******************************************************************************** - day2time: Fixed mismatched 'timezero'-'time' parameter "get". ******************************************************************************** FV ******************************************************************************** - For logical columns of a binary table, display 'U' (undefined) for illegal values (anything other than 'T', 'F', or 0) rather than interpreting the values as 'F'. - Fixed bugs occurring when trying to display slices of a data cube FITs file. - Avoid memory faults when trying to open a FITs file that has a binary table with non-zero variable length array columns but has no rows. - Fixed bugs (extra columns, incorrect row selections) in ASCII output when saving from a binary table. - Increased precision in output ASCII file values and displayed table cells. - Fixed exported text file from vector columns in a binary table (was only showing the first element) - Fixed table "Edit Cell" function on x86_64. - Fixed plotting in ds9 which was not correctly handling lower case column names. - Fixed fv scripting error in which the existence of a $HOME/.fv directory was assumed. - Allow directory paths that contain parentheses. ******************************************************************************** SUZAKU ******************************************************************************** - hxdmkgainhist_gso: * Bug fix due to a change of the text xspec output. - xisgtigen: * New parameter (hidden) 'wingti' (default "no") to maximize GTI for the window option or the psum mode. With wingti=yes, telemetry saturation is judged for each exposure of window (or each line in the psum mode). - xisrmfgen: * New parameters: bi_si_edge_mode, fi_si_edge_mode * "bi_si_edge_mode" activates a new response model that improves the XIS1 response around Si K edge. "bi_si_edge_mode" is set to 1 by default. * Running xisrmfgen with "bi_si_edge_mode" of 0 produces the same RMF file as before. * "fi_si_edge_mode" is introduced just for future use. "fi_si_edge_mode" is set to 0 by default. * xisrmfgen does not run with "fi_si_edge_mode" of 1. - Update to com_cli-2.08, to fix compilation with g95 0.93 on Mac OS X. ******************************************************************************** SWIFT ******************************************************************************** - uvotgcn: * Write ASPCORR keyword if aspect correction taken from earlier processing of related information. - uvotevtlc, uvotmaghist, uvotproduct, uvotsource: * Write column SATURATED. - uvotimage, uvotoptsum: * Use sec2time instead of swifttime to convert MET to UTC for consistency with other Swift software - uvotimsum: * Clarified error message logged when input image is not oriented North up. - uvotmaghist: * Enabled LSS correction by default (there was a duplicate lssfile entry in the parameter file which disabled it by default). - uvotproduct: * Using recent versions of ds9 for graphic generation had assorted issues with title and label placement and grid features. Added the gridfile parameter to allow the user to specify the grid file. Use a custom ds9 v6 grid file if that version is detected. * Disallow timezero=0 since it has a meaning other than MET=0 to uvotmaghist (which this tool runs). - uvotskycorr: * Disable catalog cross-referencing by default since it is not a necessary function of this tool. ******************************************************************************** CONFIGURATION ******************************************************************************** - The installed architecture-specific directory name on Mac OS X (e.g. "i386-apple-darwin12.2.0") now accurately reflects the nature of the build (i386 vs. x86_64). Previously the name was derived solely by config.guess based on the default state of the C compiler being used. - The Xspec component - when built in isolation, i.e. without any other mission- specific or general utility packages present in the heasoft-6.13 code tree - will now default to a 64-bit build (x86_64-apple-darwinX.X.X) on Mac OS X. If desired, users may override this behavior to force a 32-bit build by configuring with the option '--enable-mac_32bit_build=yes'.