******************************************************************************** RELEASE NOTES FOR HEASOFT 6.14 August 6, 2013 ******************************************************************************** The HEASoft 6.14 release is primarily driven by new software for the NuSTAR mission and 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 ******************************************************************************** Version 3.35: - fixed problem with the default tile size when compressing images with fpack using the Hcompress algorithm. - fixed returned value ("status" instead of "*status") - in imcompress.c, declared some arrays that are used to store the dimensions of the image from 'int' to 'long', to support very large images (at least on systems where sizeof(long) = 8), - modified the routines that convert a string value to a float or double to prevent them from returning a NaN or Inf value if the string is "NaN" or "Inf" (as can happen with gcc implementation of the strtod function). - removed/replaced the use of the assert() functions when locking or unlocking threads because they did not work correctly if NDEBUG is defined. - made modifications to the way the command-line file filters are parsed to 1) remove the 1024-character limit when specifying a column filter, 2) fixed a potential character buffer-overflow risk in fits_get_token, and 3) improved the parsing logic to remove any possible of confusing 2 slash characters ("//") in the string as the beginning of a comment string. - modified configure and Makefile.in so that when building CFITSIO as a shared library on linux or Mac platforms, it will use the SONAME convention to indicate whether each new release of the CFITSIO library is binary-compatible with the previous version. Application programs that link with the shared library will not need to be recompiled as long as the versions are compatible. In practice, this means that the shared library binary file that is created (on Linux systems) will have a name like 'libcfitsio.so.I.J.K', where I is the SONAME version number, J is the major CFITSIO version number (e.g. 3), and K is the minor CFITSIO version number (e.g., 34). Two link files will also be created such that libcfitsio.so -> libcfitsio.so.I, and libcfitsio.so.I -> libcfitsio.I.J.K Application programs will still run correctly with the new version of CFITSIO as long as the 'I' version number remains the same, but the applications will fail to run if the 'I' number changes, thus alerting the user that the application must be rebuilt. - fixed bug in fits_insert_col when computing the new table row width when inserting a '1Q' variable length array column. - modified the image compression routines so that the output compressed image (stored in a FITS binary table) uses the '1Q' variable length array format (instead of '1P') when the input file is larger than 4 GB. - added support for "compression directive" keywords which indicate how that HDU should be compressed (e.g., which compression algorithm to use, what tiling pattern to use, etc.). The values of these keywords will override the compression parameters that were specified on the command line when running the fpack FITS file compression program. - globally changed the variable and/or subroutine name "dither_offset" to "dither_seed" and "quantize_dither" to "quantize_method" so that the names more accurately reflects their purpose. - added support for a new SUBTRACTIVE_DITHER_2 method when compressing floating point images. The only difference with the previous method is that pixels with a value exactly equal to 0.0 will not be dithered, and instead will be exactly preserved when the image is compressed. - added support for an alias of "RICE_ONE" for "RICE_1" as the value of the ZCMPTYPE keyword, which gives the name of the image compression algorithm. This alias is used if the new SUBTRACTIVE_DITHER_2 option is used, to prevent old versions of funpack from creating a corrupted uncompressed image file. Only newer versions of funpack will recognize this alias and be able to uncompress the image. - made performance improvement to fits_read_compressed_img so that when reading a section of an compressed image that includes only every nth pixel in some dimension, it will only uncompressed a tile if there are actually any pixels of interest in that tile. - fixed several issues with the beta FITS binary table compression code that is used by fpack: added support for zero-length vector columns, made improvements to the output report when using the -T option in fpack, changed the default table compression method to 'Rice' instead of 'Best', and now writes the 'ZTILELEN' keyword to document the number of table rows in each tile. - fixed error in ffbinit in calculating the total length of the binary table extension if the THEAP keyword was used to override the default starting location of the heap. Version 3.34 - 20 March 2013 - modified configure and configure.in to support cross-compiled cfitsio as a static library for Windows on a Linux platform using MXE (http://mxe.cc) - a build environment for mingw32. (contributed by Niels Kristian Bech Jensen) - added conditional compilation statementsfor the mingw32 environment in drvrfile.c because mingw32 does not include the ftello and fseeko functions. (contributed by Niels Kristian Bech Jensen) - fixed a potential bug in ffcpcl (routine to copy a column from one table to another table) when dealing with the rare case of a '0X' column (zero length bit column). - fixed an issue in the routines that update or modify string-valued keyword values, as a result of the change to ffc2s in the previous release. These routines would exit with a 204 error status if the current value of the keyword to be updated or modified is null. - fixed typo in the previous modification that was intended to ignore numerical overflows in Hcompress when decompressing an image. - moved the 'startcol' static variable out of the ffgcnn routine and instead added it as a member of the 'FITSfile' structure that is defined in fitsio.h. This removes a possible race condition in ffgcnn in multi-threaded environments. Version 3.33 - 14 Feb 2013 - modified the imcomp_decompress_tile routine to ignore any numerical overflows that might occur when using Hcompress to decompress the image. If Hcompress is used in its 'lossy' mode, the uncompressed image pixel values may slightly exceed the range of an integer*2 variable. This is generally of no consequence, so we can safely ignore any overflows in this case and just clip the values to the legal range. - the default tiling pattern when writing a tile-compressed image has been changed. The old behavior was to compress the whole image as one single large tile. This is often not optimal when dealing with large images, so the new default behavior is to treat each row of the image as one tile. This is the same default behavior as in the standalone fpack program. The default tile size can be overridden by calling fits_set_tile_dim. - fixed bug that resulted in a corrupted output FITS image when attempting to write a float or double array of values to a tile-compressed integer data type image. CFITSIO does not support implicit data type conversion in this case and now correctly returns an appropriate error status. - modified ricecomp.c to define the nonzero_count lookup table as an external variable, rather then dynamically allocating it within the 3 routines that use it. This simplifies the code and eliminates the need for special thread locking and unlocking statements. (Thanks to Lars Kr. Lundin for this suggestion). - modifed how the uncompressed size of a gzipped file is computed in the mem_compress_open routine in drvrmem.c. Since gzip only uses 4 bytes in the compressed file header to store the original file size, one may need to apply a modulo 2^32 byte correction in some cases. The logic here was modified to allow for corner cases (e.g., very small files, and when running on 32-bit platforms that do not support files larger than 2^31 bytes in size). - added new public routine to construct a 80 keyword record from the 3 input component strings, i.e, the keyword name string, the value string, and the comment string: fits_make_key/ffmkky. (This was already an undocumented internal routine in previous versions of CFITSIO). - modified ffc2s so that if the input keyword value string is a null string, then it will return a VALUE_UNDEFINED (204) status value. This makes it consistent with the behavior when attempting to read a null keyword (which has no value) as a logical or as a number (which also returns the 204 error). This should only affect cases where the header keyword does not have an equal sign followed by a space character in columns 9 and 10 of the header record. - Changed the "char *" parameter declarations to "const char *" in many of the routines (mainly the routines that modify or update keywords) to avoid compiler warnings or errors from C++ programs that tend to be more rigorous about using "const char *" when appropriate. - added support for caching uncompressed image tiles, so that the tile does not need to be uncompressed again if the application program wants to read more data from the same tile. This required changes to the main FITS file structure that is defined in fitsio.h, as well as changes to imcompress.c. - enhanced the previous modification to drvrfile.c to handle additional user cases when running in the HEASARC's Hera environment. ******************************************************************************** CCFITS ******************************************************************************** - Bug fix to getNamedLines: The 'where' variable should be reset to the top of the HDU prior to doing keyword search. - Replaced the use of the valarray '==' operator with an explicit loop in ColumnVectorData::compare. This was to get around a compiler glitch that appeared on Mac 10.9. ******************************************************************************** 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: - Fixed error if the spectrum is a single channel. Was writing the RATE or COUNTS value into a keyword instead of the column. - Fixed so that a CHANNEL column is always written out even for a single channel file. Also ensured that RATE, COUNTS, STAT_ERR are written as columns in type II files for the case of a single channel where all rows have the same value. Fix for writing E_MIN and E_MAX correctly as columns when there is only one channel. - Added a version of SPcopyKeys which copies from a different named HDU. Also added some handy utility routines to read strings from a text file and convert a string to an integer or real. - Added shiftEnergies method to shift the response in energy space (analogous to shiftChannels). Added versions of the shiftChannels and shiftEnergies methods which take multiple shift specifications at the same time. Added option to shift channels by energy instead of channel number using the channel energy bound information. - Added a substituteRow method to replace the contents of a row. This should be used sparingly since it is inefficient. ******************************************************************************** APE / XPI (Parameter Interface Libraries) ******************************************************************************** - pquery2: Fixed to enable the correct/traditional pquery2 behavior. ******************************************************************************** ATTITUDE ******************************************************************************** - prefilter: Fixed bug that appeared when using new gfortran v4.8.1, in which erroneous output values in the 'COR_SAX' and 'MCILWAIN_L' geomagnetic data columns were generated. ******************************************************************************** FV ******************************************************************************** - Bug fix: Text dump of vector column was changing NULLs to non-zero values. - Updated third-party packages in HEASoft: Tcl/Tk 8.5.13 Itcl 3.4.1 Tix 8.4.3 WCSLIB 4.1.6 - fitsTcl and POW libraries: Applied changes required for use with Tcl 8.5.13, and addressed some compiler warnings. ******************************************************************************** FUTILS ******************************************************************************** - fdump: Add support for 8-byte integer datatype. - fimgstat: Modified to support 3-D and 4-D images if the higher dimensions have length = 1. - fkeyprint: Increase max # of input files to 4096. - fmerge: Allow for longer filenames, and where necessary increase the length of the 'context' string sent to other routines (e.g. fcerr) to handle the longer filenames. - fverify: Fixed bug in computing the location of the data heap in binary tables if the THEAP keyword is used to override the default starting byte of the heap. ******************************************************************************** HEATOOLS ******************************************************************************** - ftdiff: Use TBIT for X type, not TBYTE. - ftimgcalc: Update WCSLIB version to 4.16. http://www.atnf.csiro.au/people/mcalabre/WCS/ - ftmerge: Allow a single input file via the command line. - ftstat: Add support for fixed-length vector columns; display messages notifying user that zero-length vector columns or columns of type TBIT (or TLOGICAL or TSTRING) will not be computed. Update ftstat and fstatistic help files to clarify how they differ in handling vector columns. Allow 3-D and 4-D images, as long as the 3rd and 4th axes have a length = 1. - ftverify: Fixed bug in computing the location of the data heap in binary tables if the THEAP keyword is used to override the default starting byte of the heap. Update WCSLIB version to 4.16. http://www.atnf.csiro.au/people/mcalabre/WCS/ ******************************************************************************** HEAGEN ******************************************************************************** - barycorr: * Add NuSTAR CALDB query capability; * Case of barytime=YES with more than two extensions now works * More descriptive error messages, and less repetitive * Fix bug in handling of RXTE extractor and TIMEZERO keyword - flx2tab: Modified so that the input text file can use tab separated columns. - flx2xsp: Fixed so that the input file columns can be separated by tabs as well as spaces. - rgsrmfsmooth: Update WCSLIB version to 4.16. http://www.atnf.csiro.au/people/mcalabre/WCS/ ******************************************************************************** HEASARC ******************************************************************************** - xy2sky, sky2xy: Allow for RADESYS keyword (FITS v3.0 convention) instead of RADECSYS, and make their presence (and that of EQUINOX) optional rather than generating an error, writing radecsys='' and equinox='0' into the par file if they are not found. ******************************************************************************** XIMAGE ******************************************************************************** - Fixed a bug encountered in reading an event file in which events with null coordinates are retained with incorrect coordinate values. These events are now rejected as they are encountered during the reading. - Update to version 7.1.1 of the Starlink AST library. http://starlink.jach.hawaii.edu/starlink/AST - Changed NSEQ from 4 to 15 inside AST library's RoundFString function to avoid bug that rounds numbers near -9.999 to -100 instead of to -10. - Update Tcl/Tk to 8.5.13. Known issue on some platforms: After using the /XTK plot device, the following message may be displayed upon exit: [XIMAGE> quit X Error of failed request: RenderBadPicture (invalid Picture parameter) Major opcode of failed request: ### (RENDER) Minor opcode of failed request: # (RenderFreePicture) Picture id in failed request: ######### Serial number of failed request: #### Current serial number in output stream: #### ******************************************************************************** XSELECT ******************************************************************************** - Fixed incorrect behavior seen when executing "save all", i.e. prompt about clobbering the output file before prompting for the output filename. - Added entries for NUSTAR to xselect.mdb ******************************************************************************** XSPEC ******************************************************************************** Version 12.8.1: New features: - New models: cpflux - a variant of cflux for photon flux. heilin - Voigt absorption profiles for the HeI series lyman - Voigt absorption profiles for the HI or HeII series zbabs - EUV ISM attenuation - A new statistic, pgstat, has been added for the case of Poisson-distributed data with a Gaussian-distributed background. The whittle statistic can now be used when fitting averaged power density functions by appending an integer (so eg whittle5 is the statistic to use when fitting a pdf constructed by averaging those from 5 observations). - The old CERN Minuit library, which is used for the migrad, minim, monte, and simplex fitting methods and the improve command, has been replaced by the new version. The minim and monte methods are no longer supported and the new version does not include an improve command. The output from the migrad and simplex fitting methods now looks the same as that from the leven method. Note however that the rules for when to write intermediate fit results are not directly comparable so do not provide a measure of the relative speed of the methods. - Fakeit now has a 'nowrite' option to generate fake spectra without producing output files. This is also now available in the multifake.tcl script command. - Parallel processing capability has been added to the steppar command and can be invoked using the parallel command. - Markov Chain Monte Carlo (the chain command) now uses the Goodman-Weare algorithm by default. Previously the default was Metropolis-Hastings. - After a chain run, the best-fit parameters and statistic are now displayed with "chain info", and are available through the "tclout chain" option. - The default atom_db version used in apec models may now be modified with the ATOMDB_VERSION keyword in the user's Xspec.init file. - Steppar now has a 'delta' option for performing grids centered on the best-fit parameters. - The 'setplot delete' option has been enhanced to allow removal of all or a range of commands. - For external programs calling XSPEC, new wrapper functions have been added for retrieving XFLT keywords from data files. - Norm parameters are now set with a default 'soft' upper limit below their 'hard' upper limit. - In PyXspec, the Fit.statMethod and statTest attributes can now be set for individual spectra. Enhancements previously released as patches to 12.8.0: - AtomDB has been upgraded to version 2.0.2. - The tclout 'stat' and 'statmethod' options can now retrieve the test statistic as well as the fit statistic. - The simftest Tcl script command now takes an optional filename argument for output. - Attributes added to PyXspec classes: Xset.parallel, Fit.statTest. All bug fixes to v12.8.0 released as patches are included in v12.8.1. In addition the following problems have been corrected: - The command history file xspec.hty (in the user's ~/.xspec directory) is now updated when exiting XSPEC with the 'quit' command. Previously it was only updated when exiting with 'exit'. - The 'chain' command can now read/write files in ASCII format when running in the default Goodman-Weare mode. Previously this feature was only available for Metropolis-Hastings chains. - Fix to an array access error in the nthcomp model. - PyXspec fix removes error messages generated when accessing response parameters in Python versions 2.6.x. ******************************************************************************** XSTAR ******************************************************************************** Version 2.2.1bn15 - updates since v221bn13 (HEASOFT 6.13) include: - Fixed error which caused spurious features in absorption line profiles: in routine stpcut: dpcrit=1.e-2 --> dpcrit=1.e-6 - Allows density to exceed 1.e+18. This represents some serious approximations, physically: there are various quantities which are tabulated vs. density, and those grids (still) end at 10\^18. For example, the recombination into high n levels for each ion is lumped into one rate, for levels beyond those which are treated spectroscopically. Computationally, the recombination rate into these levels can be written n\_e * alpha\_highn(n\_e, T). So the n\_e which is the argument of the alpha\_highn function still can't go beyond 10\^18. But the n\_e multiplier can be arbitrarily large. Similar comments apply to some other types of rates. - Includes new data on N VI level structure and collisional excitation. ******************************************************************************** EXOSAT ******************************************************************************** - tkexomerge: Invoke "wish" at startup rather than "wish8.0". ******************************************************************************** NUSTAR ******************************************************************************** NuSTARDAS version 1.2.0 - new software for the NuSTAR mission: * nuattcorr - Correct NuSTAR attitude file * nubackscale - Apply backscale correction to NuSTAR energy spectra * nucalcpha - Correct energy, calculate PHA and assign event grades for NuSTAR event files. * nucalcpi - Calculate PI column values of NuSTAR event files. * nucalcpos - Convert Raw coordinates into Detector coordinates of NuSTAR event files. * nucalcsaa - Calculate SAA passages for NuSTAR * nucoord - Convert Raw coordinates into Detector and Sky coordinates of NuSTAR event files * nuexpomap - Generate exposure maps for NuSTAR event * nufilter - Create a NuSTAR filter file from HK data running 'prefilter' and 'makefilter' * nuflagbad - Flag events for bad pixels in NuSTAR event files * nuflagevt - Flag events according to various cuts criteria in NuSTAR event files * nuhotpix - Search for hot and flickering pixels in NuSTAR event files * nulccorr - Apply livetime correction to NuSTAR light-curves * nulivetime - Apply the dead time correction to the temporal keywords of the NuSTAR event files. * numetrology - Process the metrology data for NuSTAR * numkarf - Generates an ARF file for an input PHA file for NuSTAR * numkrmf - Generates an RMF file for an input spatial region file for NuSTAR * nupipeline - Run in sequence the tasks for NuSTAR data processing * nuproducts - Extract high-level data products from a Level 2 event file for NuSTAR * nuscreen - Generate GTIs and use them together with event properties selection to screen NuSTAR event files * nuskypos - Calculates SKY position of the optical axis, of the aperture stop center and of the DET1 reference pixel for NuSTAR * nuskytodet - Calculates DET1 and DET2 coordinates of a SKY pixel for NuSTAR * nuversion - Report version string for NuSTAR package ******************************************************************************** SUZAKU ******************************************************************************** SUZAKU: - aepipeline, aeattcor2, hxdxb, hxdwampipeline: Fixed deprecated qw( ) syntax in foreach loops. ******************************************************************************** SWIFT ******************************************************************************** BAT: - batcelldetect, batoccultmap: Updated WCSLIB version to 4.16. http://www.atnf.csiro.au/people/mcalabre/WCS/ - batsurvey: By default, prevent operation on data with 20 energy bins instead of normal 80 energy bins. new parameters 'dph_pattern' 'attitude_pattern' 'sao_pattern' 'go_pattern' 'de_pattern' are filename wildcard patterns that give the user control over which files are used for processing. UVOT: - uvotapplywcs: Updated WCSLIB version to 4.16. http://www.atnf.csiro.au/people/mcalabre/WCS/ - uvotdetect: Added a mode that improves source detection in images with few counts: when expopt=EVENTS is specified, an image with discretized counts is passed to SExtractor. - uvotsource, uvotmaghist, uvotproduct, uvotevtlc: Updated the derivation of the rate limit to account for uncertainty in the background. Include the aperture, large scale sensitivity, and detector sensitivity corrections in the upper limit calculations (previously, only coincidence loss was included). Added the CORR_RATE_LIMIT column and derive the MAG_LIM, MAG_HZ_LIM, FLUX_AA_LIM, FLUX_HZ_LIM columns from CORR_RATE_LIMIT instead of COI_RATE_LIMIT. Include the Swift clock correction when converting UTC to MET. - uvotcentroid, uvotgrplot, uvotsequence: PGPLOT-perl module updated to v2.21, ExtUtils-F77 updated to v1.17. Distributed by Karl Glazebrook via http://search.cpan.org/~kgb/. Modified K. Glazebrook's build to allow universal architecture formats of PGPLOT.bundle on Mac OS X. XRT: - xrtcalcpi: Bug fixed handling 'seed' input parameter. - xrtpccorr: Bug fixed. - xrtpipeline: Use of the "pat" attitude file by default. Handle SLEW and SETTLING mode while correcting bias for Photon Counting mode. ******************************************************************************** XTE ******************************************************************************** - pcarsp: - comma-separated list of PCU weights now works properly - exit task if no detector/layers are requested - pcaextspect2: - remove unused and undocumented 'src_pha_file_nodt' and 'bkg_phafile_nodt' parameters, in favor of new 'deadcorrtype' parameter to control how dead-time is calculated - 'filtfile' parameter now accepts @filtfiles.lis form of input; 'filtfile' is only prompted if 'respfile' is not NONE - handle case when final EXPOSURE is zero, new 'phazeroexp' keyword controls what happens in this situation - better parsing of 'pculist' and 'layerlist', including ranges - pcadeadspect2: - new parameter 'deadcorrtype' allows to correct for LIVE- or ON-time - output keyword is now DEADAPP instead of DEADCORR for compatibility - new parameters 'gtiarray' 'lcbinarray' 'maxmiss' 'mfracexp' to handle all possible time binnings - pcaextlc2 (NEW TASK): extracts Standard2 light curve with corrections - pcaprepobsid (NEW TASK): prepares an entire RXTE observation for PCA analysis - pcamergeobsids (NEW TASK): merges individual observations into a single data set - pcaprepfile2: small cleanups - saextrct: version 4.3a: Lift formal limit on number of input files to 999 files instead of 100. ******************************************************************************** GLOBAL CHANGES / CONFIGURATION ******************************************************************************** - Issue a warning on Darwin if Perl is not co-located with C since XCode C is not likely to play nice with non-XCode Perl. - hwrap: New utility to create a wrapper environment for HEASOFT tasks to prevent clashes with other software packages (e.g. XMM-SAS, CIAO). See http://heasarc.gsfc.nasa.gov/lheasoft/hwrap.html for more information. - All Perl scripts: Replace "require getopt|s.pl" with "use Getopt::Std", as getopt.pl and getopts.pl are no longer distributed with the latest Perl (~v5.15.x - 5.16.x). Replace "&Getopt|s()" calls with getopt|s(). - Older Fortran-based ftools: change all udmget arrays MEMB/S/I/L/R/D/X of size (1) to size (100) to get past new aggressive optimization in gfortran 4.8.x. The new compiler decides that e.g. MEMI(1) can never have more than one element so when doing loop unrolling optimization appears to (incorrectly) remove the loop over its elements. - Add checks for -fno-automatic (gfortran) or -fstatic (g95) compiler flags to protect un-SAVEd variables in Fortran.