CIAO 4.18 Release Notes
CIAO 4.18 is distributed for the following platforms:
- Linux 64 bit (Intel/x86)
- Apple macOS 13 (Ventura) through macOS 26 (Tahoe), Intel/x86 and ARM (Apple Silicon)
Installation instructions are available below. There are three ways to install CIAO (all come with Python 3.12):
- with the ciao-install script,
- using conda,
-
or, for macOS users, installed on macOS using a DMG file.
(16 Dec 2025)
There is no support for 32 bit operating systems, older Linux (CentOS 7 era), older macOS platforms (macOSX Monterey and earlier), or Windows (CIAO can be installed using WSL but it is untested and there is very limited support). More details can be found on the Platform Support page.
- Notable changes and improvements in CIAO 4.18
- How CALDB 4.12.3 Affects Your Analysis
- Installation and Setup
- Tools
- Parameter Files
- Sherpa
- Analysis Scripts
- Libraries
- Graphical User Interfaces
- Environment
- Documentation
Notable changes and improvements in CIAO 4.18
CIAO 4.18 includes initial support for FITS tables with K-type (8 byte integer) values, several important bug fixes, and updates to support newer compilers. There have been enhancements to Sherpa and updates to Off The Shelf (OTS) packages like SAOImage DS9.
-
CIAO is available with Python 3.12. It can be installed manually using a conda package manager with the https://cxc.cfa.harvard.edu/conda/ciao and conda-forge channels or automated by using the ciao-install script.
macOS users can now install CIAO into the /Applications
folder using the new macOS DMG
disk image file.
-
Several tools have been updated including important bug fixes and enhancements such as:
- Expanded FITS Support: many CIAO tools now support the FITS K-type, 8 byte integer, aka "long long", data type. This is needed to correctly read and filter modern FITS files that contain large or high-precision integer values. In CIAO 4.18 this includes most tools that manipulate tabular data and includes tools such as dmcopy, dmlist, dmstat, dmsort, dmextract, and many more. This also includes filtering and binning tables and images.
- A bug has been fixed in acis_process_events which corrects the temperature dependent CTI correction for a small number of events, mostly in CC mode.
- The glvary tool has an important bug fix that was triggered when the tool would internally filter out events, for example if the GTI for different chips are significantly different.
-
Notable Sherpa changes include: adding support for optimizers from SciPy and optimagic; the addition of the cstatnegativepenalty statistic; support for plotting multiple datasets with a single command; and an easy way to convert the results from the MCMC-based algorithm for Bayesian Low-Count X-ray Spectral data to be used with the Arviz package for exploratory analysis of Bayesian models.
As a reminder, Sherpa is also available as a stand alone system, accessible from the Sherpa GitHub repository or from the standalone Sherpa page.
-
Core CIAO libraries have been updated to
- The CXC Datamodel now supports filtering and binning of images and tables with FITS K-type, 8 byte integer values. The Python access to the DataModel (crates) has not been updated to support these values.
- The error library no longer includes the internal "dsERRORCODE" error code name as part of the warning/error message.
- The region library now generates the correct union vs. intersection (and/or) logic for FITS region files where the COMPONENT values are out of order.
-
There have been several script updates released with CIAO 4.18 including
-
The new acis_split_evt_by_fptemp script helps to
automate the steps outlined in the Extracting Spectra and Responses for ACIS Observations that Undergo Large Focal-plane Temperature Swings thread.
- dax has several new Interactive Region analysis tasks. When each of these tasks is enabled for the selected regions, different analysis tasks will be run as the region is moved/edited. This includes: getting sum of pixel values (ie total counts), plotting light curves and spectra, and elastic ellipse which will reposition, reorient, and resize the region to match the 2nd order image moments of the data in the region.
-
sherpa_contrib.stats.kaastra17
module uses the approximation from Kaastra 2017 to identify whether the
best-fit model found with the CStat statistic is a good
description of the data.
-
-
CIAO includes version 8.7b2 of SAOImage ds9.
TipUsers are again reminded that they need to change the Edit mode setting in order to select or create regions in ds9. Please see the watchout page for more information on this.
SAOImageDS9 v8.7b2 highlights include:
- Autosave: ds9 will now periodically perform a backup that can be restored automatically if the application were to quit unexpectedly. User can disable and change the back cadence in the preferences.
- Improved error checking and performance of the SAMP hub, in particular on multi-user systems.
- Include documentation of DS9's cloud computing capabilities: how to setup remote analysis tasks.
Users of a Linux OS which uses a new version of libxml2 (2.14.0 or later) are likely to need to update the DS9 provided in CIAO 4.18 to version 8.7b3 or later.
How CALDB 4.12.3 Affects Your Analysis
CALDB 4.12.3 Release Notes (16 December 2025)
ACIS Imaging and Grating Data
-
ACIS QE Contamination Model vN0016
The ACIS QE contamination model has been upgraded to N0016:
acisD1999-08-13contamN0016.fits
Recent calibration work with observations of previously-observed cosmic sources, such as clusters of galaxies, supernova, and blazars, has shown that the contaminant on the optical blocking filter has continued to accumulate, affecting the optical depth in a quasi-linear fashion, since the previous model was introduced in 2023. The models are separated between ACIS-I and ACIS-S arrays, however the center-to-edge model has not changed for either array.
This model extends the prior N0015 contamination model through the end of 2029 and has been confirmed to be consistent with earlier calibration models for earlier observations. However, recent calibration observations of Mkn 421 and E0102-72.3 has shown that the prior contamination model is inadequate for fitting the most recent data, necessitating the introduction of the N0016 model for newer observations.
More information about the contamination model, and prior versions, can be found in the ACIS QE contamination model Why document. A detailed presentation of the derivation of the new model—and the resulting changes in the estimated time-dependent effective area of ACIS-I and ACIS-S—is in the technical details section of the CALDB 4.12.3 Release Notes.
These CIAO response tools automatically apply the contamination file when creating ACIS response files:
As well as the scripts which use them:
HRC Data
-
HRC-I Time-Dependent QE Files
The HRC-I quantum efficiency QE has been decaying for some time, particularly since the year 2011, when a 5% to 10% per year reduction had been measured. To address this issue, the HRC-I Calibration Team had introduced a time-dependence into the QE files in 2018 which are now extended in time to the latest epoch of observations. Included in this update (fileset N0017) are three new file epochs, with two of the files affecting observations after 2024 June 6 using a prior high voltage setting while the third, effective 2025 February 23, uses the new HRC-I high voltage setting. The QE update affects the results from mkinstmap and fluximage and is applicable to all previous epochs of HRC-I observations.
Installation and Setup
Users should be aware of these installation items before installing CIAO 4.18. Additional problems which are seen less frequently are listed on the Installation & Smoke Tests bug page .
Supported Platforms
-
CIAO 4.18 is supported on:
- Linux 64 bit (Intel/x86)
- Apple macOS 13 (Ventura) through macOS 26 (Tahoe), Intel/x86 and ARM (Apple Silicon)
CIAO 4.18 only supports Python 3.12.
CIAO can be installed using the ciao-install script, conda package manager, or macOS users can use the new macOS DMG disk image file
.
Install using the ciao-install Installation Script
CIAO 4.18 is only available as a set of conda packages, but the ciao-install script has been re-written to allow users to unfamiliar with conda to automate the installation process using a single, simple command:
$ bash ciao-install
Users can download the ciao-install script from the ciao-install download page. The script has options to include additional segments such as the ACIS and HRC blank sky background CALDB files, the CIAO source code, download for different operating systems, link to existing CALDB installations, and more.
MARX is included as one of the default packages in CIAO 4.18. To skip installing marx add the
--remove marx
option to the command line.
Installing with the conda package manager
CIAO can be installed using the conda package and environment management system .
The conda release is available from the custom CXC channel and requires using the conda-forge channel.
$ conda create -n ciao-4.18 \ -c https://cxc.cfa.harvard.edu/conda/ciao \ -c conda-forge \ ciao sherpa ds9 marx ciao-contrib caldb_main
![[NOTE]](../imgs/note.png)
Unlike earlier versions, users must not specify pyciao or they will download an old, incompatible version of python modules.
Because of this, users are strongly encouraged to install CIAO 4.18 into a new, separate environment from all previous versions of CIAO.
See the conda installation instructions for more information, including known problems and incompatibilities. The CXC has had several reports of problems mixing packages from the default and conda-forge channels. If unsure, then use the --override-channels flag to ignore the default channel.
macOS: install using the .dmg disk image file
macOS users only: If you have permission and want to install
CIAO into the /Applications folder, then you can use
the CIAO .dmg disk image file to install CIAO
including: tools and Python modules, contributed scripts,
Sherpa, DS9, MARX, and the main CALDB files; the ACIS
and HRC background files are not included.
Users can follow the instructions on the .dmg disk image file download page. This involves downloading the .dmg files, opening the folder and dragging the CIAO 4.18 folder onto the Applications folder, and then running the xattr command in the terminal window.
Smoke Tests
The CIAO smoke tests are a small set of tests to verify that the installation of CIAO was successful. They should be run however CIAO was installed.
To run the CIAO smoke tests:
$ ciao $ cd $ASCDS_INSTALL $ bash test/smoke/bin/run_smoke_tests.sh
-
Users of previous versions of CIAO will note that the order of the tests is different; in the event of a test failure be sure to include the name of the test, not just the test number when contacting helpdesk.
-
The obsvis smoke tests have been removed from the default set of smoke tests. Users can manually run the smoke test by running the command:
bash $ASCDS_INSTALL/test/smoke/bin/run_smoke_tests.sh obsvis
Source builds
The source code for CIAO is provided via the ciao-install script:
$ bash ciao-install --add ciao-src --add sherpa-src
and then it can be built using the ciao_build.sh script
$ ciao $ cd $ASCDS_INSTALL $ bash ./ciao_build.sh --prefix `pwd`
(assuming users have setup the ciao alias as suggested).
Remove old parameter files
With every new CIAO release, some parameter files are changed: new parameters may be added and occasionally old ones removed or renamed. Deleting or renaming the local parameter directory ensures that the correct parameter files will be accessed the first time a tool is run:
unix% rm ~/cxcds_param4/*
Tools
acis_find_afterglow
-
Fixed bug when input event file has 0 rows.
-
Improved numerical precision when computing probabilities for pixels with large number of counts in regions where the background also includes a large number of counts.
acis_process_events
-
A bug has been fixed that triggered the warning: At least one event was associated with a focal plane temperature not compatible with the CTI file used. The bug was due to a rare condition when interpolating the focal plane temperature values used for CTI corrections. The bug primarily affects data collected in CC mode and would affect the energy (including PHA and PI channel) values for a few events.
aconvolve
-
Fixed the 2D raised cosine and Hanning convolution kernels.
addresp
-
With the introduction of the temperature dependent RMF calibration files, there are some keywords in the combined RMF that may no longer be the same. This includes: SCATFILE, GAINFILE, and FEFFILE. The header keyword lookup table has been updated to omit these keywords from the output if they are different in the inputs.
-
The tool has been updated to use common file clobber checking routine.
celldetect
-
Now correctly recognized PSFMAP files in physical units.
dmcontour
-
Fixed a stack overflow (crash) when creating large contours.
-
The tool has been updated to use common file clobber checking routine.
dmcopy
-
See CXC Datamodel library section of the release notes for information about support for FITS K-type (8-byte integer aka "long long").
dmdiff
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmextract
-
The tool has been updated to support FITS K-type, 8-byte integer values.
-
Fixed bug that would leave random files named HISTOGRAM in the current directory when certain errors occured.
dmfilth
-
The tool will now work correctly if the input image does not have World Coordinate System (WCS), or if the image as a Linear WCS with independent X and Y axes.
-
The output image will now have an exact copy of the WCS (if any) in the input images. Previously the tool would construct a tangent-plane WCS with hard coded units and axis names.
dmgroup
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmhistory
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmjoin
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmlist
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmmakereg
-
The tool has been updated to use common file clobber checking routine.
This change does affect the behavior of the tool when using append=yes as it tries to determine whether to create a new FITS extension or to try to append rows to an existing REGION extension. The append=yes option is considered obsolete and should not be used; users should use dmmerge and/or dmappend.
dmmerge
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmpaste
-
The tool has been updated to support FITS K-type, 8-byte integer values.
- A bug has been fixed that caused the data range to be incorrectly copied from the input to the output for vector columns (eg 'sky' or 'det'). The range for the first axis (eg "X") was used for both axes.
dmsort
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmstat
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmtabfilt
-
The tool has been updated to support FITS K-type, 8-byte integer values.
dmtype2split
-
The tool has been updated to support FITS K-type, 8-byte integer values.
get_src_region
-
A bug has been fixed that could cause a crash if the input file was missing the RA_NOM and/or DEC_NOM keywords.
glvary
-
A bug has been fixed which was triggered when the tool would internally filter out events. This would most often happen when the Good Time Intervals (GTIs) are different for different chips. The effect on the data was random and depended on the number of excluded events. Suspicious data would have the TOTCTS and EVENTS keywords in the output files being different values.
-
The output files: outfile or lcfile can now be piped to standard out using the - (dash) character. Note that only one of the files may be output to standard out.
$ glvary evt.fits outfile=prob.out lcfile=- mode=h | dmlist - cols
hrc_process_events
-
The tool has been updated to use common file clobber checking routine.
mkgrmf
-
The tool could crash if the path to the LSFPARAM calibration file was longer than 80 characters. This has been fixed.
rmfimg
-
Now supports RMF files for missions that start counting CHANNEL at '0' instead of '1'.
roi
-
To improve performance the tool now caches the points (locations) used in the pixelation scheme used to determine region overlap. As a side effect users can now select the starting pixelation resolution using the new regres parameter.
skyfov
-
Improved error checking on the kernel parameter which is now enumerated in the parameter files. The only valid values are now: ascii, fits, ASCII, and FITS (or any unique prefix).
srcextent
-
A bug has been fixed where the HISTORY records in the output file were not correct; they were using internal values/representations rather than the actual values the user supplied. For example: clobber=True instead of clobber=yes.
The parameter file has been updated to enumerate the shape parameter. The only valid values are disk and gaussian.
sso_freeze
-
The tool has been updated to use common file clobber checking routine.
tg_findzo
-
Updated to support Numpy 2.
vtpdetect
-
A bug was introduced in the previous release that required the optional output regfile be specified. This has been corrected.
wavdetect
-
Now correctly recognized PSFMAP files in physical units.
wcs_match
-
A new select=prefill option has been added. Whereas select=manual enters interactive mode and presents the user with all the matches based solely on distance (radius), select=prefill enters interactive mode and presents the user with pre-selected the matches based on distance as well as residual limits.
-
The tool has been updated to use common file clobber checking routine.
This change also affects the behavior of the tool when specifying wcsfile=filename. Previously if the filename did not exist, the tool would quietly look for the WCS in the input file and use that. The tool will now error out if wcsfile=filename and filename does not exist.
wcs_update
-
The tool has been updated to use common file clobber checking routine.
This change also affects the behavior of the tool when specifying wcsfile=filename. Previously if the filename did not exist, the tool would quietly look for the WCS in the input file and use that. The tool will now error out if wcsfile=filename and filename does not exist.
Parameter Files
This section provides a summary of the changes to parameter files in this release. Refer to the Tools and Analysis Scripts sections of these release notes for complete details.
We recommend deleting all the old parameter files or renaming the parameter-file directory before running any new version of CIAO to avoid conflicts. More information is available in the FAQ.
dax
-
The following parameters were added to support the new interactive analysis tasks:
- lc_binsize: the bin size, in seconds, to use when making light curves
- grptype: the group type to use when grouping the spectrum for plotting
- grpval: the value to use for the grptype
- grpbin: the bin value to use for grptype=BIN
roi
-
The regres parameter has been added. It specifies the starting pixel resolution when computing the grid to check for region overlap. The previous hard coded value of 0.2 is the default.
skyfov
-
The kernel parameter is now enumerated. The only valid options are: ascii, fits, ASCII, and FITS (or any unique prefix).
wcs_match
-
The select parameter has a new prefill option.
Sherpa
Sherpa is developed as an open project, and is available on GitHub. Comments, fixes, and additions from the community are welcome. There are additional releases for this version throughout the year, and can be installed either directly from GitHub or using the conda package manager, as described on the standalone Sherpa documentation page.
The full list Sherpa updates is given in the 4.18.0 and 4.17.1 release notes for the two standalone releases that are incorporated into CIAO 4.18. The release highlights include:
- Add support for optimizers from SciPy and optimagic.
- The addition of the cstatnegativepenalty statistic, which can help when the parameter search space includes regions which produces negative model values,
- Support for plotting multiple datasets with a single command (e.g. plot_data and plot_fit_resid), as well as supporting different plot attributes per dataset.
- An easy way to convert the results from the MCMC-based algorithm for Bayesian Low-Count X-ray Spectral data to be used with the Arviz package for exploratory analysis of Bayesian models.
![[TIP]](../imgs/tip.png)
Users who use sherpa in Jupyter notebooks should also check out the notebook_plotter: An Interactive Tool for Model Plotting and Fitting in Sherpa
Analysis Scripts
There have been several updates to the contributed scripts package since the previous CIAO release. These changes are specific to the CIAO 4.18 contributed scripts release.
acis_split_evt_by_fptemp
-
script helps to automate the steps outlined in
the Extracting Spectra and Responses for ACIS Observations that Undergo Large Focal-plane Temperature Swings thread.
dax
-
A new collection of interactive tasks have been added that allow users to create regions and when the regions are moved or edited they will:
- Display the sum of the pixel values (ie counts) in the region's text box.
- Plot the spectrum (count rate vs. channel)
- Plot the light curve (count rate vs. time)
- Plot the GLVary light curve.
- Enable "elastic ellipses" which will resize, reposition, and reorient ellipse and boxes to align with the 2nd order moments of the data inside the region.
Clear out old parameter filesSome users may see an warning/error message related to parameter files the first time they try any of these interactive tasks. Users will need to clear out their parameter files to eliminate these warnings.
/bin/rm $HOME/cxcds_param4/*par
sherpa_contrib.stats.kaastra17
-
sherpa_contrib.stats.kaastra17
module uses the approximation from Kaastra 2017 to identify whether the
best-fit model found with the CStat statistic is a good
description of the data.
Libraries
CXC Datamodel
-
The CXC datamodel library has been updated to support FITS K-type values. These are 8-byte integer values colloquially referred to as "long long" values. This includes support for both signed and unsigned values. It includes support for columns in tables, image pixel values, and keyword values.
All of the same filtering and binning operations that have been available to other data types are now available to long long values.
In CIAO 4.18 most of the tools that operate on FITS tables have been updated to make use of the expanded K-type specific CXC datamodel routines. Tools that primarily operate on header keywords and images will be updated in future CIAO releases. Tools that have not yet been update will issue the following warning:
[CXCDM 306] WARNING: Image|Column|Keyword 'NAME' is of (U)LONGLONG datatype which is not supported by this tool.
The behavior of the tool at that point is unpredictable.
-
Users can now specify the option type=i8 to indicate that the image should be cast to an 8-byte integer.
-
Caveats
There are some known limitations with K-type support:- Variable length array columns in tables are not supported. This affects some missions' RMF files.
- Not all tools have been updated to support 8-byte integer values. If a file is used with 8-byte integer values for table columns, keywords, or image pixel values the tool will print a warning. After that the behavior of the tool is unpredictable.
- The Python module accessing the CXC Data Model - crates - can not read in or create these files.
- Additional caveats related to filtering and binning ranges are discussed in the Datamodel bugs page.
-
Separate from the K-type support, the CXC datamodel has been updated to ensure that FITS structural keywords adhere to the FITS standard 80 character limit by truncating any long keyword comments (rather than allowing CFITSIO to wrap the values).
Error Library
-
The CXC Error library has been updated to remove the internal "dsABCXYZ --" identification string from warnings and error messages.
Region Library
-
Previously the tool relied on FITS region files to be sorted such that all the rows with the same COMPONENT value were sequential, as it only looked for changes in the COMPONENT value to indicate a change in logical AND to logical OR. The library will now ensure that all rows with the same COMPONENT value are properly AND'ed together.
-
The library now recognizes regions with COMPONENT=0 in FITS region files. Previously they were skipped.
Graphical User Interfaces
Obsvis
-
Obsvis has updated its default DSS image server to use DSS STSCi.
Environment
Off-the-Shelf (OTS) Package Versions
-
The following OTS packages are included with CIAO 4.18.
Executables
-
ds9 8.7b2
WarningThe DS9 exectutable included in CIAO 4.18 is likely to not work on any Linux OS using a recent version of libxml2 (2.14.0 or later), such as Ubuntu 25.10. The platform support page provides information on how to avoid this problem.
Libraries
- XSPEC 12.14.0k (models only)
- cfitsio 4.5.0
- xpa 2.1.20
Python (major packages)
- Python 3.12
- NumPy 2.3.5
- Matplotlib 3.10.8
- jupyterlab (notebook) 4.5.0
-
ds9 8.7b2
Compiler versions
-
The following versions of the gcc compiler were used to compile the binary CIAO releases.
System Build System Version Linux RedHat Enterprise Linux 8.10 gcc 13.2.0 macOSX Intel macOS 11.5 (Big Sur) Apple clang 18 macOSX ARM macOS 11.5.1 (Big Sur) Apple clang 18 -
Several CIAO applications have been updated to support the GNU++17 standard.