• Download HEASOFT
  • ********************************************************************************
                           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
        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
        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.
    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) =
    - 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
    - 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()
    - 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()
    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.
    - Changed default RowNumber from 1 to 0 in arfII constructor and read methods.
    - 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.
    - 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.
    - 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.
    - 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
    - (fitsTcl) Updated for use with new interface to CFITSIO calculator parser
    - 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.
    - 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.
    - 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.
    - fselect (wrapper to ftselect): Updated to use an "@" input file for
      the expression parameter to try to avoid quotation mark pitfalls
    - Updated to use new version 9.2.9 of the AST library:
    - Updates to allow compilation with Apple clang and on the arm64
    - 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
    - Fixed bug in efold: with multiple time series, the longer lightcurve
      does not need to be the first time series
    - Changed filter intensity to use the new mkintensfilt tool instead of
    - Turn off the error checking code in xsl_wrtcf when running fplot
      to fix problems with PGPLOT.
    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.
    - 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.
    - 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.
    - 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
    - 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:
    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.
    - addascaspec: Passed the expression to mathpha in a temporary file to
      evade the 1000 character limit for parameter values.
    - 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
      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.
    - mxdownload_wget: Replaced retired legacy.gsfc.nasa.gov address with
    - mxproduct: Adding leading zeros to tile numbers < 100, correct use
      of $num_ebands to \$num_ebands
    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:
    * 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,
    - 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
       * nihaloem: calculate Halo and Local Hot Bubble emission
    - 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
    - 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
    - Updates to allow support of Mac arm64 hardware
    - 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.
    - 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)
    - Updates to allow support of Mac arm64 hardware and newer compilers
    - 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)
    - Updates to allow support of Mac arm64 hardware
    - 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
    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
    - 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.


    If FTOOLS has been useful in your research, please reference this site (http://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