******************************************************************************** RELEASE NOTES FOR HEASOFT 6.31 November 15, 2022 ******************************************************************************** The HEASoft 6.31 release is driven by new support for the Apple Silicon (arm64) architecture and updates to mission-specific data analysis software (IXPE, NICER, NuSTAR, Swift), but as always includes other enhancements and fixes. Configuration-related changes throughout the package mean that users who already have HEASoft 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. *** IMPORTANT NOTE FOR MAC USERS: *** HEASoft 6.31 restores support for the Apple clang/clang++ compilers, and introduces support for builds of the software on the Silicon arm64 architecture. As a result, please note the following: * The default build architecture for HEASoft on Silicon is now arm64. That is, the configuration is expecting to find native arm64 compilers, NOT the Intel (x86_64) compilers you may have installed with Rosetta and used for previous HEASoft releases. If desired, it should be possible to still build HEASoft on Siicon with the Rosetta Intel compilers using the configure option "--enable-mac_intel_build", but we do not recommend this approach. * The preferred C compilers for any Mac architecture (Silicon or Intel) are now clang and clang++, which should by default operate in the correct mode for the native architecture, i.e. arm64 on Silicon and x86_64 on Intel. Similarly, the preferred Perl interpreter is /usr/bin/perl which should again match the native architecture. As always, a Fortran compiler is necessary, and should be chosen to match the architecture of the C compilers. For example, when on Silicon using CC=/usr/bin/clang (arm64), you should choose a Fortran compiler which is also arm64. The Homebrew and MacPorts package managers (for example) provide Fortran compilers which by default - i.e. when NOT using Rosetta - should match the native architecture. Lastly, note that your choice of Python should also match the architecture of your other build choices. For example, Anaconda offers Intel or Silicon versions of their software. ******************************************************************************** CFITSIO ******************************************************************************** Version 4.2.0 (Nov. 2022) - This release includes patches to security vulnerabilities. We strongly encourage this upgrade, particularly for those running CFITSIO in web accessible applications. - Fix to fits_read_key function, which was failing to properly read keywords declared type TUINT on compilers where sizeof(int) = sizeof(long). - Added new functions fits_read_cols and fits_write_cols to efficiently read or write multiple columns in a single function call - Added new function fits_copy_selrows to copy only selected rows, such as the selected rows returned by fits_find_rows - Added new calculator functions ERF(X), ERFC(X) and GAMMA(X), which are mathematical special functions of the same name - Added new calculator function GTIFIND() which reports which GTI row brackets a given time sample - Added new calculator functions which operate upon vector table values NAXIS(V), NAXES(V,n), ELEMENTNUM(V) and AXISELEM(V,n), and ARRAY(X,d) which promotes scalar X to a vector or array with given dimensions. - The CFITSIO histogramming code now handles binning by any arbitrary calculator expression rather than just a column name. Both the binned columns as well as the optional weights may be calculator expressions, enclosed in parentheses. - Binning of vector columns or expressions is now supported, as long as all binned inputs (as well as the optional weighting) have the same vector dimensions. Binning of variable-length columns remains unsupported. - A bug that caused histogram weights from columns that are null values to be tallied along with non-null values has been fixed. - The CFITSIO calculator and histogramming functionality is now fully reentrant and does not require multithreading interlocks. - A long-standing segmentation fault bug in the histogramming code related to binning any value using the "reciprocal" /XXXX notation has been fixed. - Added mutex locks for thread safety in ftgiou and ftfiou. - Added several Fortran wrappers to support image read/write when 'fpixel' and 'nelements' are 8-byte integers. - Fixed bug which was adding spaces to some cases of long string key value output. Perl interface (Astro::FITS::CFITSIO): - Added functions fits_make_histd(), fits_make_histde(), fits_copy_selrows() ******************************************************************************** ATTITUDE ******************************************************************************** - atFunctions library: * v3.5: Added atSXSBrazil(): New routine adds support for the XRISM Resolve instrument with a particular definition of the South Atlantic Anomaly (SAA) * v3.4: Bug fix in atPol60ToVect() ******************************************************************************** HEASP ******************************************************************************** Important change: heasp.h no longer includes using namespace std and CCfits and all of heasp has been placed in its own namespace called heasp. This should reduce the possibility of name conflicts between heasp and other libraries. However, it does mean that any program using heasp will require changing. The simplest solution is just to add using namespace std, CCfits, and heasp. arf: - Changed default RowNumber from 1 to 0 in arfII constructor and read methods. pha: - Improved handling of multiple SPECTRUM extensions in the same file. - Catch the potential confusion that the column is called COUNTS but the HDUCLAS3 keyword should be COUNT - Improved error trapping when writing a new spectrum file. - Improved formatting of output from disp. - Changed default SpectrumNumber from 1 to 0 in phaII constructor and read methods. - Trapped a failure to create the SPECTRUM extension in phaII::write. rmf: - Fixed error in vector constructor in multiplyByModel - Added test to check method for the low energy of a channel being less than the high energy of a channnel. - Improved diagnostics when doing consistency check between MATRIX and EBOUNDS extensions. general: - Added typedefs for RealVector, IntegerVector, and StringVector. - Renamed the isValidXUnits, isValidYUnits, calcXfactor, calcYfactor routines in SPutils to start with SP like all the other routines. - Added support for the STOKESPR and STOKESWT keywords for spectropolarimetry. These are most likely to appear in the pha and arf files but there is the option of including them in rmf files as well. The utility routine SPcheckStokesConsistency can be used to check for consistency between pairs of parameter and weighting strings. - Fixed error in SPstringTform and added all the possible pha type II columns to the list to be ignored by SPcopyCols. - Fixed SPreadKey and SPreadCol to work better with type II files. The RowNumber to default to type I is changed from 1 to 0 because otherwise there was an ambiguity when reading the first row. C library: - Added CheckRMF function. - Added support for Stokes parameter and weighting in pha, arf, and rmf objects and structures. - Fixed errors in converting between rmf objects and structures which were introduced when rmf objects switched to using vectors of vectors. ******************************************************************************** CALTOOLS ******************************************************************************** - quzcif: Fixed output formatting to prevent jumbled messages and to prevent large extension numbers from overflowing the numerical field; fixed error in reporting allowed values of codename (CAL_CNAM) under some OS, and fixed memory allocation error - quzcif2: New task intended to eventually replace quzcif. Includes a new parameter "caldbver" which can be used to query files in a specified version of the caldb.indx file. For example: % quzcif2 nicer xti - - ALIGNMENT now now - caldbver=caldb.indx20170814 This queries the good (quality = 0) ALIGNMENT file in the caldb.indx file version caldb.indx20170814. The default value of caldbver is "-", which uses the current, most up-to-date caldb.indx file. - The calibration library (callib) added/updated the following new library routines: * gtcalf2 - includes caldbver_str parameter for specifying the CALDB version * gtcnam2 - prints the unique cal_cname values as a character string from a specified calibration index field * calutils - includes a new subroutine add2cnamlist which creates a dynamic character array to store allowed CAL_CNAM values * cifsl3 - uses stricter deallocation of dynamically allocated arrays ******************************************************************************** FV ******************************************************************************** - (fitsTcl) Updated for use with new interface to CFITSIO calculator parser ******************************************************************************** HEAGEN ******************************************************************************** - barycorr: (v2.17) No longer attempts to barycenter the FPM_SEL extension of cleaned event files, preventing an error; fixed case of negative MJD causing infinite loop - mkintensfilt (NEW): New tool to calculate GTIs based on a light curve and an intensity selection. ******************************************************************************** HEASARC ******************************************************************************** - extractor: Fix for events files with no imaging coordinates, which was causing strange behavior for HALOSAT data - nh: Enforce chat level for all output starting from beginning, and prevent logging if lchat=0 - searchflickpix: Reduced number of asterisks (from 3 to 2) in some ahlog warning output to avoid misleading occurrences of "***" in output from make. ******************************************************************************** HEASPTOOLS ******************************************************************************** - ftascii2pha: (NEW) Replacement for the older task ascii2pha. - ftchkarf: (NEW) heasp-based version of chkarf, works for both type I and type II files and for multiple SPECRESP extensions in the same file. - ftchkpha: Added support for type II files and multiple extensions in file. - ftchkrmf: Slight change to output format. - ftgrouppha: Added support for type II pha files including a new parameter 'rows' which can be used to specify which spectra to group. - Trapped the case of infile==outfile and issue warnings/errors. ******************************************************************************** HEATOOLS ******************************************************************************** - fselect (wrapper to ftselect): Updated to use an "@" input file for the expression parameter to try to avoid quotation mark pitfalls ******************************************************************************** XIMAGE ******************************************************************************** - Updated to use new version 9.2.9 of the AST library: https://github.com/Starlink/ast/releases - Updates to allow compilation with Apple clang and on the arm64 architecture. - gencolor.tcl, ra_dec_to_pixel.tcl: Updates for removing tmp files without prompt; increased chatter setting for diagnostic information; ra_dec_to_pixel.tcl: added save ra/dec to .par file ******************************************************************************** XRONOS ******************************************************************************** - Fixed bug in efold: with multiple time series, the longer lightcurve does not need to be the first time series ******************************************************************************** XSELECT ******************************************************************************** - Changed filter intensity to use the new mkintensfilt tool instead of maketime. - Turn off the error checking code in xsl_wrtcf when running fplot to fix problems with PGPLOT. ******************************************************************************** XSPEC ******************************************************************************** XSPEC v12.13.0: New Models: cglumin - convolution model to calculate luminosity with the source distance in kpc Updated models: - Improved parallelism between mdefine'd and built-in model components. Any mdefine'd models now appear in the "model ?" list indicated by a hash (#) sign. - Updated wrappers for change of ismabs, ismdust, and olivineabs to double precision Fortran in previous release. - Note that internal changes to model handling mean that initpackage should be rerun for any local models. Plotting: - Added plot fitstat option. This supersedes plot chisq and works correctly for all fit statistics. - Added (l)edata and (l)eedata plot options. - Fixed X-axis ranges when stacking plots vertically. Use common X-axis if plots are not disjoint by more than an order of magnitude. - Added setplot areascale/noareascale options which modify the data, background, and residual plots by dividing by the AREASCAL keyword or vector. This is mainly useful for the XMM RGS. If setplot area is in use then this has no effect because the AREASCAL values are included when dividing by the area. - Added setplot errortype option to specify how the error bars should be calculated for the plot (note - this has no effect on fitting). This can already been done as part of the setplot rebin option. MCMC: - Added new chain proposal uniform option which gives a uniform distribution between the parameter lower and upper limits. Useful for setting initial walkers in gw method. Miscellaneous: - Added comp and group options to show all parameters in a given component or group to show parm free, fixed, and linked. - Fixed simftest.tcl so that it returns the model to the state on input. Added reducedchisq.tcl and writesimpars.tcl scripts. - Now stores DETNAM, FILTER, STOKESPR, STOKESWT keyword values for spectra and will give warnings about inconsistencies with background/correction, arfs, and rmfs. - Improved diagnostic output when ARF files fail to load. - Fixed case where all spectra are removed while using extended energies, and table models are in use. - tclout datagrp now returns 0 rather than 1 when no spectra are loaded. PyXspec Release Notes for version 2.1.1 (Xspec 12.13.0) New Features: - The 'Fit.goodness()' function takes new optional argument, '[no]fit', to provide same functionality available in standard Xspec's 'goodness' command. - New attributes for the 'Fit' class: 'previousGoodness' and 'previousGoodnessSims' - New function 'AllModels.mdefine()' to provide access to standard Xspec's 'mdefine' capability. - The 'Xset.abund' attribute can now take an input list of 30 values in addition to the already available selection of built-in tables. See also: https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html ******************************************************************************** XSTAR ******************************************************************************** XSTAR v2.59: Changes since version 2.58e: - Fixed bug introduced in version 2.58 which omitted some cross sections for near-edge resonance structure in opacity; also fixed bug which omitted charge transfer ionization of O I. ******************************************************************************** ASCA ******************************************************************************** - addascaspec: Passed the expression to mathpha in a temporary file to evade the 1000 character limit for parameter values. ******************************************************************************** IXPE ******************************************************************************** - Python code v1.6, compiled tools v3.0.0 - Please note that the IXPE Python source code has been moved out of (but still relies on) HEASoftPy and is now co-located with the compiled IXPE tools. - ixpeaspcorr: The event position corrections are now handled differently. The basic algorithm remains the same as the previous version. * The events are split into two groups: Those events recorded when the spacecraft was using OH1 for attitude, and those events recorded when the spacecraft was using OH2 for attitude. These are corrected by the previous algorithm separately, and are corrected to the same average position (the OH1 group average position). * The par file interface now requires the attitude file name argument "att_path" in order to determine the OH1 and OH2 event groups. Changed the html file to reflect the functionality below and the changes to the parameter behavior noted in the v1.6 release notes. Due to changes introduced in astropy.table.Table version 4.3, the "nan" values previously read from a file have now become masked values, and the column has become a MaskedColumn, with MaskedArray arrays. This led to changes in ixpeaspcorr_lib.AttitudeFile.calc_attitude_vtis and ixpeaspcorr_lib.Attitudefile.calc_txydz_corr to conditionally detect this type and change the accounting for masked or nan values to work with both the older and the newer versions of astropy.table.Table. A bug was discovered in ixpeaspcorr_lib.AttitudeFile.calc_txydz_corr that was causing incorrect values of TXYDZ_CORR[1] to be written to the output file. This was fixed. ixpeboomdriftcorr module added. Functionality added to ixpeaspcorr_lib.AttitudeFile.calc_txydz_corr to allow it to use the TXYDZ_CORRBD attitude-file column output by that module as input, if it is available. - ixpeboomdriftcorr: New task corrects for modeled boom drift errors using a specific state vector and event time stamps. The function is to remove the periodic position offsets caused by the thermal distortions of the IXPE boom during each orbit. The .par, .py, .py.hml, and _lib.py files were all added to support this functionality. - ixpeexpmap: In some cases (faint, diffuse x-ray sources), ixpeboomdriftcorr will be used without ixpaspcorr subsequently being applied to the data. This module was changed to use the aspect data from ixpeaspcorr (TXYDZ_CORR column) if present, then ixpeboomdriftcorr (TXYDZ_CORRBD column) if present. (in ixpeexpmap_lib.PointingDirectionMap.add_aspect_solutions). Due to changes introduced in astropy.table.Table version 4.3, the "nan" values previously read from a file have now become masked values, and the column has become a MaskedColumn, with MaskedArray arrays. This led to changes in ixpeexpmap_lib.PointingDirectionMap.add_aspect_solutions to conditionally test for the MaskedArray type and handle the resulting mask or "nan" values. - ixpegaincorrpkmap: This module no longer uses Peak Gain maps from the CALDB, but uses Periodic Peak Gain maps produced by the IXPE pipeline from daily calibrations, and released with the new public data sets. The parameter file interface has therefore changed to take a named Periodic Peak Gain map file as input, using the new "pkgainfile" parameter. These files are included in released data sets as ".ppg" files, which are included in the "auxil" subdirectory of the observation segment data directory. - ixpegaincorrtemp: ixpegaincorrtemp.html changed to make the temperature file name used in the Example consistent with the DU number of the events file. ******************************************************************************** MAXI ******************************************************************************** - mxdownload_wget: Replaced retired legacy.gsfc.nasa.gov address with heasarc.gsfc.nasa.gov - mxproduct: Adding leading zeros to tile numbers < 100, correct use of $num_ebands to \$num_ebands ******************************************************************************** NICER ******************************************************************************** NICERDAS 10 is a major NICER software release that contains many new features. Please see the following link for a narrative of changes in this version: https://heasarc.gsfc.nasa.gov/docs/nicer/analysis_threads/heasoft631/ * Important note regarding the niprefilter task: When compiled on Apple hardware with the entire GCC v12 compiler suite (e.g. from Homebrew or MacPorts) the SAA_TIME column of the output prefilter extension has been seen to be slightly off from expected prototype values. We are still investigating, but in any case we recommend on Macs (as noted abvoe) that you use clang/clang++ to build heasoft rather than third-party (e.g. MacPorts, Homebrew) gcc/g++ v12 compilers. Using gfortran v12 paired with clang/clang++ is acceptable and does not result in the prototype differences. - New NICER background models included in NICER: * 3C50: nibackgen3C50 now incorporated in NICERDAS * Space Weather: nibkgestimator now incorporated in NICERDAS (and HEASoft equivalents niswbkgspect, niswbkglc) * SCORPEON: new background modeling tool (niscorpspect, niscorpspectmod) - New high level product extraction pipeline tools * nicerl3-spect: complete NICER spectral extraction pipeline * nicerl3-lc: complete NICER light curve extraction pipeline - New lower level supporting tasks * niextspect: extract standard NICER spectrum * niextlc: extract standard NICER light curve * niphasyserr: apply standard NICER systematic error vector to spectrum * niphaquality: apply NICER QUALITY screeing to spectral channels * nihaloem: calculate Halo and Local Hot Bubble emission estimates - New tools (nicerl2, niprefilter, niprefilter2) now accept alias NICERV4 - New tool nicalfixevt fixes invalid PI_FAST pulse heights - New task niautoscreen for automatic per-detector screening - New task nigeodown - Tools nicerl2, niprefilter, niprefilter2 now accept alias NICERV4 - nicerl2 (and niprefilter, nicercal, nimpucal) can reset the RA_OBJ / DEC_OBJ keywords of output products - nicerl2: SOLARPHI column is now SOLAR_PHI - nicerarf: only allow response generation on non-barycentered data - nicerarf: user can specify R.A. / Dec. as OBJ or NOM to use the metadata keywords embedded in the spectrum file - nicerarf / nicerrmf: fix bugs when updatepha=YES, though updatepha=NO is recommended - nicerrmf, niexposum, niextract-events, nifpmsel: fix off-by-one bug in gtifilter() - nicerarf and nicerrmf write ANCRFILE, BACKFILE, RESPFILE with no leading path components (i.e., filename only) - niexposum: automatically determine which extension and column to operate on - nivigsum (nicerarf): now provides a warning when target is out of field of view - niprefilter2: now has vercheck parameter which checks if filter file needs reprocessing - nicercal (and nicerpi, nicertimecal, nimpucal) now have caldbcheck / incremental keywords to prevent reprocessing if the output product is already up to date - niprefilter2: user can now explicitly request / reject columns with COLNAME or -COLNAME - nifpmsel: now accepts detlist=@filename.txt syntax to read from file - barycorr no longer attempts to barycenter the FPM_SEL extension of cleaned event files, preventing an error - nifpmsel: uses more sensible tmin/tmax for empty GTIs, which prevents barycentering failures or lockups - nimaketime: default overonly_range=0.0-30.0 and overonly_expr=NONE - All NICER tasks more consistently write HISTORY keywords ******************************************************************************** NUSTAR ******************************************************************************** - Updates to allow support of Mac arm64 hardware ******************************************************************************** SUZAKU ******************************************************************************** - Updates to allow compilation with Apple clang and on the arm64 architecture; removes the 'mkanlinit' task code generator from the build in favor of static code - hxdpinxbpi.par: Fixed missing closing quote, which was causing problems for HEASoftPy. ******************************************************************************** SWIFT ******************************************************************************** GEN: - swifttime: (v1.8) Revised extrapolation coefficients from 2021-2022 linear fit - swiftxform: (v2.4) For UVOT, use DETNAM/WHEELPOS from primary HDU if extension has UNKNOWN (2200) BAT: - Updates to allow support of Mac arm64 hardware and newer compilers UVOT: - uvotgrplot: Updates to PGPLOT Pelr module to allow support of Mac arm64 hardware - uvotimgrism: (v1.7) Use DETNAM/WHEELPOS from primary HDU if specified extension has UNKNOWN (2200) XRT: - Updates to allow support of Mac arm64 hardware ******************************************************************************** XTE ******************************************************************************** - pcabackest (v3.12c) Improved use of CALDB output (only use unique CALDB-returned files rather than file+ext); fixed string overflow bug and uninitialized variable issues which cause unreliability in some situations ******************************************************************************** HEASoftPy: ******************************************************************************** New version 1.2: - Fixed a bug for float parameters with INDEF - Fix for tasks with a parameter called "name" - Fix for case of comma in parameter value - Fix for parameter string containing new line character - Fix to handle parameters that pass a comma-list inside quotes - Removed heasoftpy/packages as python tasks are now handled in the general heasoft framework - Updated the return object to contain the parameters used in the call not those updated by the task, if any ******************************************************************************** MISC. ******************************************************************************** - Restored full support for Apple clang/clang++ compilers (Intel or Silicon architectures) - Added support for compilers with Apple Silicon arm64 architecture - Enforce requirement of Python 3.7 or newer (for HEAsoftPy) when IXPE software is included. When installing the IXPE software, HEASoftPy prerequisites are enforced: NumPy v1.7 or newer, AstroPy v4.0.0 or newer, and SciPy v1.6.0 or newer. - Attempt to prevent unintentional linking of C/Perl interface libraries with a MacPorts or Homebrew copy of the CFITSIO library, which can happen when using a MacPorts or Homebrew Perl, causing run-time crashes in Perl tasks (e.g., barycorr). - Switched default build architecture for Mac ARM hardware from Intel to ARM: changes configure option "--enable-mac_arm_build" to "--enable-mac_intel_build"; attempts to correctly handle compiler architecture in either case, for example adding "-arch x86_64" to relevant *FLAGS if using clang/clang++ for the Intel option. - Added new installation utility "lhea-fixpython" to be run on Python tasks (e.g., in NICER and IXPE): replaces the first line of a script with the configured Python executable, allowing them to be run outside of an interactive Python session. HEASoft / FTOOLS Help Desk If FTOOLS has been useful in your research, please reference this site (https://heasarc.gsfc.nasa.gov/ftools) and use the ASCL reference for HEASoft [ascl:1408.004] or the ASCL reference for the original FTOOLs paper [ascl:9912.002]: Blackburn, J. K. 1995, in ASP Conf. Ser., Vol. 77, Astronomical Data Analysis Software and Systems IV, ed. R. A. Shaw, H. E. Payne, and J. J. E. Hayes (San Francisco: ASP), 367. Web page maintained by: Bryan K. Irby HEASARC Home | Observatories | Archive | Calibration | Software | Tools | Students/Teachers/Public Last modified: Wednesday, 16-Nov-2022 11:23:32 EST HEASARC Staff Scientist Position - Applications are now being accepted for a Staff Scientist with significant experience and interest in the technical aspects of astrophysics research, to work in the High Energy Astrophysics Science Archive Research Center (HEASARC) at NASA Goddard Space Flight Center (GSFC) in Greenbelt, MD. Refer to the AAS Job register for full details. |