ChangeLog¶
Version 4.4.2¶
This version of pyXSIM contains a bugfix for simulations where particle-based emission sources have no intrinsic widths (neither cell sizes or smoothing lengths).
Version 4.4.1¶
This version of pyXSIM contains a bugfix, where supplying an array of floats for abundance tables in thermal source models was not working correctly.
Version 4.4.0¶
This version of pyXSIM contains a bugfix and updates compatibility with other packages.
Support for Python 3.8 has been dropped.
The minimum required version of yt has been bumped up to 4.3.0.
Cython 3.0 is now supported as a compile-time dependency for those building pyXSIM from source.
A subtle bug that caused photons created from cells or particles on the edges of input regions to be scattered to large distances has been fixed.
Version 4.3.0¶
This version of pyXSIM contains new features.
In conjunction with SOXS 4.6.0, it is now possible to pass an HDF5 events file created by
project_photons()
directly to the SOXS instrument simulator for use in event simulation. See SOXS for more details.The method
make_source_fields()
now returns a fourth field, which is the X-ray “count rate” in photons/s. See X-ray Fields for yt for more details.It is now possible to change the field names supplied by
make_source_fields()
andmake_intensity_fields()
if one desires to by supplying a value for the optionalband_name
keyword argument. If specified, this argument will replace the"{emin}_{emax}_keV
part of the field name. See X-ray Fields for yt for more details.Two new convenience methods,
make_line_source_fields()
andmake_line_intensity_fields()
, have been added, which create new fields for the line emission from a source. See Line Fields for more details.For thermal emission sources, is is now possible to supply a
min_entropy
parameter, which will set a minimum entropy for the gas cells or particles to be considered in the emission calculation. See Thermal Sources for more details.
Version 4.2.1¶
This version of pyXSIM contains two bugfixes.
A bug that sometimes prevented X-ray emission fields from being created in yt using thermal source models if a spatially varying metallicity field was used has been fixed.
A bug that prevented luminosity field names from being displayed correctly in yt plots has been fixed.
Version 4.2.0¶
This version of pyXSIM contains one new feature and a critical bugfix.
A bug introduced upstream in SOXS 4.4.0 caused normalization of emission and spectra in the
IGMSourceModel
to be incorrect. This is fixed in SOXS 4.5.1 and this version requires that version of SOXS to work correctly.The function
make_photons()
now has afields_to_keep
option that allows one to store fields other than the positions, velocities, and sizes of cells or particles to the photon list HDF5 file. See Generating a New Photon List from a Data Source for more details.
Version 4.1.1¶
This version of pyXSIM fixes a bug in the
IGMSourceModel
where low density,
low temperature, and low metallicity plasmas would sometimes result in spectra with
negative values.
Version 4.1.0¶
This version of pyXSIM adds new features and improvements, as well as a bug fix.
Installation and use on Windows 64-bit platforms is now supported.
Generating photons from thermal emission models should be somewhat faster (sometimes up to 50% faster) thanks to more efficient spectral interpolation routines.
A new class for reading information about and creating spectra from photon lists,
PhotonList
, has been added. See The PhotonList Class for more details.Much more information about the parameters used to create photon lists and event lists are stored in the HDF5 files, as well as the versions of yt, pyXSIM, and SOXS used to create them. This info can be obtained from the
EventList
class, as well as the newPhotonList
class.The calculation of the Doppler shifting of photons from particle or cell velocities was incorrect for velocities in the relativistic regime and has been fixed. This did not affect anyone working in the Newtonian regime.
All-sky projections can now utilize a
center_vector
which decides what position in the dataset the center of the sky coordinate system points to. See “Internal” Observers and “All-Sky” Observations for more details.The minimum version of yt has been bumped up to 4.1.3.
The minimum version of SOXS has been bumped up to 4.3.0.
This version of pyXSIM uses the new versions of the spectral models for the Cloudy CIE and IGM models provided in SOXS. See the information about them here and here.
Version 4.0.1¶
This is a critical bugfix update to pyXSIM. The only change is that this version has a minimum requirement of yt 4.1.2, which fixes a bug in which the number density of hydrogen nuclei for certain Arepo datasets (including those from Illustris TNG) was a factor of 2 too high. This, in turn, resulted in emission measures that were a factor 2 too high, and also affects calculations that include photoionization, which depend on the number density of hydrogen nuclei.
The bug, and its fix, are detailed here:
Version 4.0.0¶
This is a major update to pyXSIM which incldues many new features.
In addition to the already existing mode of generating photon lists for producing synthetic observations, pyXSIM now has two new modes: creating X-ray emission, luminosity, and intensity fields for use in yt (see X-ray Fields for yt) and creating spectra from yt data containers (see Generating Spectra from Data Objects).
- Many changes to thermal sources, all of which are detailed in Thermal Sources:
Modeling thermal emission spectra has been refactored into three new classes:
CIESourceModel
,NEISourceModel
, andIGMSourceModel
. For sources in CIE, it is now possible to use SPEX, MeKaL, and Cloudy CIE models for the spectra. The new IGM model includes photoionization and resonant scattering off of the CXB.There is now no default value for the
max_density
parameter inThermalSourceModel
instances (previously it wasmax_density=5e-25
).ThermalSourceModel
subclasses can now use log-spaced energy binning for the spectral model.It is now possible to specify a yt field that allows for the hydrogen fraction to spatially vary for thermal sources.
Abundance tables from Feldman (1996) and Cloudy 17.03 have been added as options for specifying solar abundances.
When creating a photon list, it is now possible to add a
bulk_velocity
parameter, which will change the frame of reference for the velocity fields used in Doppler shifting of photons. See Generating Photon Lists for more details.A new (and experimental) mode for creating all-sky mock observations using “internal” observers has been added to pyXSIM. See “Internal” Observers and “All-Sky” Observations for more details.
A new option for using a flat-field projection when producing an event list has been added. See Event Lists for more details.
A new option for saving the line-of-sight coordinates when producing an event list has been added. See Event Lists for more details.
When producing an event list, it is now possible to change the abundance table assumed if one is using the “TBabs” model for foreground Galactic absorption. See Event Lists for more details.
Version 3.0.1¶
This is a bugfix release to pyXSIM. All users are strongly encouraged to upgrade.
A bug in the
ThermalSourceModel
which resulted in crashes when encountering a chunk of one or zero gas particles has been fixed.When using variable elements in
ThermalSourceModel
, if theZmet
argument for the remaining elements was a field and was a mass fraction, its conversion to solar units was computed incorrectly. This has now been fixed.
Version 3.0.0¶
This major update to pyXSIM contains a number of updates, including some backwards-incompatible changes to the API. To figure out how to transfer your code to version 3.x, please read v2_to_v3.
A brand-new paradigm for generating photon lists and event lists has been created. In the new scheme, one does not create
PhotonList
andEventList
classes, but instead two functions,make_photons()
andproject_photons()
are used to create photon lists and event lists which are stored on disk as they are made. This allows for very large photon lists and event lists to be created without holding them all in memory at once. For guidance on how to use the new functions, see Photon Lists and Event Lists.Support for Python 2.7 has been dropped in this version.
The minimum supported yt version is now 4.0.
The
Zmet
keyword argument toThermalSourceModel
has been changed to a required argument.The default minimum temperature
kT_min
for theThermalSourceModel
has been changed from 0.008 keV to 0.025 keV.The
max_density
keyword argument toThermalSourceModel
has had its default value set to \(5 \times 10^{-25} g cm^{-3}\); previously it wasNone
.The X-ray binaries source generator has been dropped from pyXSIM.
The background and point-source source generators have been removed, as this functionality can now be used within SOXS.
Version 2.3.1¶
This version contains bug fixes.
Bugs were fixed to ensure compatibility with both yt 3.x and yt 4.0 (beta).
A bug was fixed that resulted in odd behavior of the progress bars when in a Jupyter notebook.
Version 2.3.0¶
This version contains bug fixes and minor enhancements.
This version supports
h5py
3.x, which deprecated the use of accessing HDF5 dataset data using the.value
attribute.This version supports both the
yt
3.x series and theyt
4.0 beta version.Previous versions of pyXSIM scaled thermal emission by \(n_en_{H+}\), where \(n_{H+}\) is the number density of free protons. However, the correct scaling is \(n_en_{H}\), where \(n_{H}\) is the number density of hydrogen. This has been fixed.
A bug which occurred when variable individual elements were used in the
ThermalSourceModel
has been fixed.The progress bar now updates correctly for generating sky positions when creating a
EventList
.Some minor speedups have been achieved in the
ThermalSourceModel
class.
Version 2.2.0¶
This version contains feature enhancements (with some backwards-incompatible changes) and optimizations.
The 2.2.x series of pyXSIM will be the last to support Python 2.7.
Support for non-equilibrium ionization plasma emission using AtomDB has been added to pyXSIM. see Non-Equilibrium Ionization for more details.
The default AtomDB/APEC version for pyXSIM is now v3.0.9.
The ability to change the redshift, collecting area, exposure time, or distance of the source when creating a
EventList
fromproject_photons()
has been removed. This was a little-used feature that was potentially confusing to users, and is mostly unnecessary given that the photon number will be reduced when convolving with any instrument simulators. This change also made the code simpler and resulted in optimizations. The related keyword arguments toproject_photons()
will still be accepted, but will be ignored.Arepo data is now fully supported.
A new option to treat each cell or particle which emits photons as a point source has been added to the
from_data_source()
method ofPhotonList
.The built-in instrument models are now deprecated, as well as
ConvolvedEventList
objects. For convolution with instrument models, users are encouraged to use SOXS or another instrument simulation package.
Version 2.1.1¶
This version contains a single bugfix. The conversion factors between mass fractions and
solar units for individual elements in the ThermalSourceModel
were not being calculated correctly and has now been fixed. Simulations which used a single
metallicity field only were not affected by this bug.
Version 2.1.0¶
This version contains bugfixes and feature enhancements, as well new version requirements for dependencies.
This version of pyXSIM requires AstroPy version 2.0 or higher, yt version 3.4 or higher, and SOXS version 2.0 or higher.
A number of bugs in the
merge_files()
function were fixed.The
"redshift"
and"d_a"
parameters have been removed fromEventList
objects, as events at different redshifts/distances should be able to be combined together.If two
EventList
objects are added and their"sky_center"
parameters differ, the twoEventList
objects are added together and the"sky_center"
parameter of the first one is used. Previously, two different"sky_center"
parameters would have thrown an error.With the introduction of instrument models for ACIS-S in SOXS v2.0, it is no longer necessary to retain the ACIS-S response file with pyXSIM and in general response files will no longer be included with pyXSIM for instrument simulation.
The
ACIS_I
andACIS_S
instrument models have been updated from Cycle 18 to Cycle 19.The ability to use separate abundances of individual elements in the computation of a thermal spectrum has been added to the
ThermalSourceModel
. See Thermal Sources and Variable Abundances for more information.In the creation of a
ThermalSourceModel
, it is now possible to use Solar abundance tables other than the implicitly assumed Anders & Grevesse 1989. See and Thermal Sources and Changing the Solar Abundance Table for details.It is now possible to simulate a
ThermalSourceModel
without emission lines. See Thermal Sources for details.project_photons()
has been refactored under the hood to improve memory usage and speed.
Version 2.0.0¶
This is a major new release of pyXSIM, which fixes bugs, adds a number of new features, but most importantly, implements a simpler API in many aspects. A number of the changes in this version are backwards-incompatible with previous versions, and where applicable is noted below. A useful summary of the API changes with some code examples can be found at v1_to_v2.
The largest (and largely hidden) change in this release is the outsourcing of much of pyXSIM’s capabilities to SOXS, which is a spin-off package from pyXSIM which models thermal spectra, foreground galactic absorption, and convolving with instrument models. This results in far less duplication between the code bases of these two closely related projects.
New features:
A new class,
XrayLightCone
, has been added which takes a number of redshift snapshots from a cosmological simulation and produces a light cone simulation of events from them. This is an experimental feature which should be considered in “beta”, and currently only works with Enzo or Gadget-based cosmological simulations.A module has been added to generate X-ray photons from a population of X-ray binaries, both low-mass and high-mass. This assumes as input a simulation with star particles which have masses, ages, and metallicities. See xray-binaries for more information. This is an experimental feature which should be considered in “beta”.
A minor feature, but methods and functions that accept arguments such as
area
andexp_time
which accept values with unit information can now acceptQuantity
instances.
Changes related to thermal source modeling:
pyXSIM now uses SOXS to implement APEC-based thermal spectral models.
The previously deprecated XSPEC-based thermal spectral models have been completely removed from this version, as they proved too difficult to maintain.
It is no longer necessary to create a thermal spectral model object explicitly, as this is now handled by
ThermalSourceModel
. This method now takes the name of the spectral model as a parameter. Consequently, arguments needed for the creation of spectra now need to be passed toThermalSourceModel
upon creation of a new instance. This is a backwards-incompatible change.Thermal broadening of spectral lines is now on by default.
Changes related to modeling of foreground Galactic absorption:
pyXSIM now uses SOXS to implement the wabs and tbabs foreground absorption models.
The previously deprecated XSPEC-based spectral absorption models have been completely removed from this version, as they proved too difficult to maintain.
It is no longer necessary to create a spectral absorption model object explicitly, as this is now handled by
project_photons()
. This method now takes the name of the absorption model as a parameter. Consequently, thenH
parameter for the hydrogen column is now a parameter which is passed toproject_photons()
. This is a backwards-incompatible change.
The following changes arise from a refactor of InstrumentSimulator
The
InstrumentSimulator
class now uses the SOXS machinery for convolving with instrumental responses.The only operations performed by
InstrumentSimulator
are convolution with the effective area curve (using the ARF) and with the response matrix (using the RMF). No spatial PSF convolutions or rebinning operations can be applied. For more detailed instrument simulation, users are advised to write events to SIMPUT files and use SOXS directly.New Hitomi response files have been supplied with this version.
The
XRS_Imager
andXRS_Calorimeter
instruments have been renamed toLynx_Imager
andLynx_Calorimeter
.
The following interrelated changes arise from a refactor of EventList
:
Instrument simulators now return a new
ConvolvedEventList
instance, which contains the data and parameters for convolved events. It is no longer possible forEventList
instances to contain convolved events.The
write_spectrum()
now only bins on unconvolved energy (see next bullet for the new way to bin on channel).The new
ConvolvedEventList
class has a method,write_channel_spectrum()
, which writes a spectrum binned on PI or PHA channels.EventList
instances no longer contain pixelated coordinates for events based on the resolution of the simulation, but only sky coordinates. Thewrite_fits_file()
andwrite_fits_image()
methods now accept arguments which create custom pixelizations for event files and images.EventList
instances no longer contain all events on all processors when created in parallel, but each processor now contains a subset of the events. The I/O routines forEventList
have been rewritten so that all events are still written to the file.The methods for generating events from point sources and backgrounds have been removed from
EventList
and now exist as “source generators” which return new event lists. See source-generators for more information.
Other changes:
The
sky_center
parameter toproject_photons()
is now a required argument. This is a backwards-incompatible change.The
clobber
keyword argument for overwriting files has been changed tooverwrite
. This is a backwards-incompatible change.Handling for cut regions when creating a
PhotonList
for a dataset with periodic boundaries has been improved in this release.PhotonList
andEventList
instances now use the same keys as their corresponding HDF5 files. The old keys will still work for the time being, but are deprecated. This is a backwards-incompatible change.The optional argument
smooth_positions
has been added to theproject_photons()
method, which allows one to smooth the event positions to avoid block-shaped artifcats in images with lots of counts.Thermal spectral models no longer require a
cleanup_spectrum
method. Spectral absorption models no longer requiresetup_spectrum
andcleanup_spectrum
methods. Source models no longer require acleanup_model
method.pyXSIM now has SciPy as a required dependence.
Throughout the code, pseudo-random number generators can now be specified simply as integer seeds in signatures to functions which take the keyword argument
prng
.
Version 1.2.6¶
This is a bugfix release that ensures that fields with units of code_metallicity
are
properly handled.
Version 1.2.5¶
This is a bugfix release with two fixes:
Ensured that metallicity fields in the
ThermalSourceModel
are properly scaled to the Anders & Grevasse (1989) solar metallicity since this is what APEC assumes.Support for octree mesh datasets (such as RAMSES) has now been added.
Version 1.2.4¶
This version fixes a single bug, ensuring that the metallicity is converted to solar units in thermal source models.
Version 1.2.3¶
This is a bugfix release.
Gadget binary (non-HDF5) datasets are now supported.
Make sure that SPH datasets assume fully ionized gas if an
ElectronAbundance
field is not present.The normalization of the power-law and line emission models was incorrect by a factor of \(1/(1+z)\). This has been fixed.
Version 1.2.2¶
This is a bugfix release.
Position fields for SPH datasets will now be correctly detected for irregularly shaped sources.
Photon numbers for all sources are now being generated assuming a Poisson distribution.
pyXSIM will no longer automatically emit a deprecation warning when it tries to import
assert_same_wcs
from yt.Minor documentation fixes.
Version 1.2.1¶
This is a bugfix release.
Fixed a bug when writing FITS table files when AstroPy 1.3 is installed.
Fixed an import error which occurs when using the yt development branch.
Minor documentation updates
Version 1.2.0¶
This version contains bugfixes and performance enhancements, as well as a new test suite.
We are now running a test suite which automatically checks changes to the code pushed up to the GitHub repository.
The definition of the
norm
parameter for thereturn_spectrum()
method is now consistent with the normal Xspec definition.Annoying NumPy indexing warnings have been silenced by only using signed ints for indexing.
Absorption models have been refactored to have a more common structure.
For table-based absorption models, the cross-section is now interpolated instead of the absorption factor itself, which should be more accurate.
XSpec-based spectral models are officially in deprecation; they will be removed in a future release.
A bug that prevented response matrices from not being read properly with old versions of AstroPy was fixed.
Version 1.1.1¶
This version is a bugfix and optimization release.
Some speedups have been achieved in the convolution of energies with RMFs.
An error is now thrown if one attempts to use a zero or negative redshift in
from_data_source()
without specifying a distance.
Version 1.1.0¶
This version contains a bugfix and some minor new features.
Fixed a bug which did not use the correct file names for AtomDB tables when using
TableApecModel
.Refactored the absorption model handling into a new class. No user-facing changes have been made.
Added special classes for the TBabs and wabs absorption models.
De-emphasizing XSpec-based spectral models in favor of the table-based alternatives.
Version 1.0.1¶
This is solely a bugfix release.
Ensured that spherical and box-shaped regions which wrap periodic boundaries are handled correctly.
The width of event list field of view is determined correctly for 3-D source distributions with high aspect ratios.