********************************************************************************
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.