V12.8.2 Jul 2014
· The code underlying the NEI models has been rewritten to accommodate the new AtomDB 3.0 files, the beta version of which are included as the default when using any of the NEI models. Older versions can be recovered using xset NEIVERS. The CEI models (apec etc) use some of the same code but there should be no change in their behavior except for a slight speed-up.
· agauss – Gaussian model with units in Angstrom and a Gaussian shape in wavelength space.
· nsx – Neutron star non-magnetic atmosphere model from Wynn Ho and collaborators.
· nsmaxg – Neutron star magnetic atmosphere model.
· rnei – NEI recombination model assuming an initial temperature.
· vrnei – rnei with variable abundances for the common elements.
· vvrnei – rnei with variable abundances for all elements (Z <= 30).
· zagauss – The agauss model with a redshift parameter.
· The goodness command has added options fit|nofit. The fit option runs a fit on each simulation before calculating the test statistic.
· The cstat fit statistic can be modified by appending an integer eg. statistic cstat5. In this case the statistic will be evaluated as if the group min N had been used in grppha. This is not as efficient because the rebinning has to be done every statistic evaluation however it is usual for testing using simulations.
· The ‘model’ command now checks that parameters are all within a reasonable order of magnitude (~1e10) of each other, and issues a warning if they are not.
· Improved the handling of new-best-fit cases when running the ‘error’ command on parallel processes. The global new-best-fit is now automatically retained. Previously the user was prompted to re-run ‘error’ in a single process.
· Models can now store (keyword,value) pairs using loadDbValue (C++)or PDBVAL (Fortran). These values can be recovered using the tclout(r) modkeyval option. This provides a way to get internal information from the last invocation of a model.
· There is a manual XSFunctions_guide.pdf in Xspec/src/help describing some of the C++ classes used in the XSFunctions library. This is intended to make it easier to use these classes in other models.
Enhancements previously released as patches to 12.8.1:
· PyXspec: added Fit.testStatistic attribute for retrieving the test statistic value from the most recent fit.
· PyXspec: added compiler macros for switching to <Python/Python.h> include paths when building on Mac platforms.
All bug fixes to v12.8.1 released as patches are included in v12.8.2. In addition the following problems have been corrected:
· Fix for a particular case of non-associative expression evaluation. Models of the form C((M1*A)M2) or C(M1*A)M2, where C is a convolution component, were being wrongly evaluated as (C(M1*A))M2.
· For users with external programs linking to the XSPEC model library, the FNINIT function now properly initializes the AtomDB version to v2.0.2.
· Fix for an ‘ignore’ command syntax evaluation that was causing a crash on OS X Mavericks.
V12.8.1 Aug 2013
· New models:
· cpflux - a variant of cflux for photon flux.
· heilin - Voigt absorption profiles for the HeI series
· lyman - Voigt absorption profiles for the HI or HeII series
· zbabs - EUV ISM attenuation
· A new statistic, pgstat, has been added for the case of Poisson-distributed data with a Gaussian-distributed background. The whittle statistic can now be used when fitting averaged power density functions by appending an integer (so eg whittle5 is the statistic to use when fitting a pdf constructed by averaging those from 5 observations).
· The old CERN Minuit library, which is used for the migrad, minim, monte, and simplex fitting methods and the improve command, has been replaced by the new version. The minim and monte methods are no longer supported and the new version does not include an improve command. The output from the migrad and simplex fitting methods now looks the same as that from the leven method. Note however that the rules for when to write intermediate fit results are not directly comparable so do not provide a measure of the relative speed of the methods.
· Fakeit now has a 'nowrite' option to generate fake spectra without producing output files. This is also now available in the multifake.tcl script command.
· Parallel processing capability has been added to the steppar command and can be invoked using the parallel command.
· Markov Chain Monte Carlo (the chain command) now uses the Goodman-Weare algorithm by default. Previously the default was Metropolis-Hastings.
· After a chain run, the best-fit parameters and statistic are now displayed with "chain info", and are available through the "tclout chain" option.
· The default atom_db version used in apec models may now be modified with the ATOMDB_VERSION keyword in the user's Xspec.init file.
· Steppar now has a 'delta' option for performing grids centered on the best-fit parameters.
· The 'setplot delete' option has been enhanced to allow removal of all or a range of commands.
· For external programs calling XSPEC, new wrapper functions have been added for retrieving XFLT keywords from data files.
· Norm parameters are now set with a default 'soft' upper limit below their 'hard' upper limit.
· In PyXspec, the Fit.statMethod and statTest attributes can now be set for individual spectra.
Enhancements previously released as patches to 12.8.0:
· AtomDB has been upgraded to version 2.0.2.
· The tclout 'stat' and 'statmethod' options can now retrieve the test statistic as well as the fit statistic.
· The simftest Tcl script command now takes an optional filename argument for output.
· Attributes added to PyXspec classes: Xset.parallel, Fit.statTest.
All bug fixes to v12.8.0 released as patches are included in v12.8.1. In addition the following problems have been corrected:
· The command history file xspec.hty (in the user's ~/.xspec directory) is now updated when exiting XSPEC with the 'quit' command. Previously it was only updated when exiting with 'exit'.
· The 'chain' command can now read/write files in ASCII format when running in the default Goodman-Weare mode. Previously this feature was only available for Metropolis-Hastings chains.
· Fix to an array access error in the nthcomp model.
· PyXspec fix removes error messages generated when accessing response parameters in Python versions 2.6.x.
v12.8.0 Dec 2012
· Parallel-processing capability for specific tasks has been added by way of the new "parallel" command. This allows the user to set a maximum number of processes to spawn when running certain XSPEC commands. Currently the options for parallel-processing are limited to use with the "fit" and "error" and commands, though we plan to implement more in the near future. This first implementation is considered to be a BETA release, and we look forward to hearing your comments and suggestions.
· XSPEC now distinguishes between the 'fit' statistic and the 'test' statistic. The fit statistic is used to find the best-fit parameter values and errors while the test statistic is used to provide a goodness-of-fit. Consequently, the goodness command now uses the test statistic. Separating these two classes of statistic has allowed us to add a number of new test statistics. These include Kolmogorov-Smirnov and the related Anderson-Darling and Cramer-von Mises. Also new are the runs statistic, based on the number of runs of consecutive positive (or negative) residuals, and the Pearson Chi-Square (pchi) statistic, Pearson's original test statistic.
· The basic Levenberg-Marquardt fit algorithm has undergone a number of changes. The most visible is an additional column in the output during the fit. |beta|/N is the norm of the vector of derivatives of the statistic with respect to the parameters divided by the number of parameters. At the best fit this should be zero so provides another measure of how well the fit is converging. |beta|/N can also be used as the criterion to stop the fit instead of the statistic delta although this is still considered experimental.
Other internal changes to the fit algorithm are to treat the first iteration as a special case where only normalizations are allowed to change and to add the option of using delayed gratification, which can speed up convergence.
· New models: compmag, comptb, rgsxsrc. The latter is reinstated from it use in XSPEC v11.
· New plotting command "plot goodness", for plotting a histogram of the most recent "goodness" simulation.
· New tclout option "goodness sims".
· Added the option of using the Goodman-Weare algorithm instead of Metropolis-Hastings when using the chains command to run MCMC.
· Added the Whittle statistic for fitting models to power density spectra.
· If a data file is read which has RESPFILE="" then the response extensions (MATRIX, EBOUNDS) are read from the same file.
· Added support for a new type of model component: a mixing component which operates on the model pre-multiplied by the effective area. This is similar to the pile-up model type but allows for a models which require mixing between multiple spectra.
· Table model files can now have interpolated and additional parameters intermixed provided that additional parameters are indicated by METHOD=-1 in the PARAMETERS extension.
Enhancements previously released as patches to 12.7.1:
· The "plot chain" has a new "thin" option for thinning the display of chain points.
· Added a "tclout ignore" option for easy retrieval of currently ignored channels. Similar capability added to PyXspec's Spectrum class.
All bug fixes to v12.7.1 released as patches are included in v12.8.0. In addition the following problems have been corrected:
· The eqpair model used wrongly-sized arrays when multiple spectra were used with RMFs having varying numbers of photon energy bins. Eqpair (plus eqtherm and compth) also needed a new default value for its optical depth parameter, which fixes the problem if parameter 4 is zero.
· A fit parameter which started close to the minimum/maximum could under some circumstances be incorrectly pegged at the maximum/minimum.
· When the "error" command was run on a model with soft limits (ie. soft limits for some parameters set to a narrower range than hard limits), and the best fit value fell within the soft limit region, the displayed differences (in parentheses) were not consistent with the reported ± limits.
· Problem occurred in apec model when zero width lines were in the final energy bin.
· Fix to a potential normalization problem occurring in lorentz model with low-energy large-width lines.
· When running initpackage/lmod from PyXspec on certain Linux builds, local models calling functions in XSPEC's xslib library producing unresolved symbol link errors.
v12.7.1 March 2012
· New models: gadem, vgadem, eplogpar, logpar, optxagn, optxagnf, and pexmon.
· The convolution models rdblur, rdblur2, kdblur and kerrconv have been sped up. They are now O(N) instead of O(N^2) where N is the number of energy bins in the response.
· Continued rationalization of Compton reflection routines. eqpair, eqtherm, compth, compps, ntee now all use the same routines as reflect and ireflct. For models with ionized reflector there may be changes in results because the new code uses the actual input spectrum to calculate the ionization fractions while the old code assumed a power-law.
· The parameter simulation arrays used for the calculation of eqwidth and flux error are now accessible through tclout.
· Initpackage now works on Cygwin. The static_initpackage work-around is no longer needed and has been removed.
· New Fortran interface wrapper function RFLABD, for reading new abundance tables into external programs using the XSPEC models library.
· Added an xsetbl function for use in external programs. This provides access to XSPEC's internal exponential table model routines, similar to what xsatbl and xsmtbl do for additive and multiplicative table models.
· Bayes command is now supported for response parameters (ie. gain).
· New 'show version' option.
· Improved 'error' command output messaging. The error results now have lower chatter level (5) than most of the warning messages (10), thus making it easier to filter out the warnings.
· PyXspec beta version upgraded to v1.0. See the PyXspec release notes for details.
Enhancements previously released as patches to 12.7.0:
· New tclout options: nullhyp, rerror.
All bug fixes to v12.7.0 released as patches a-u are included in v12.7.1. In addition the following problems have been corrected:
· Program aborted when attempting to fit with gain parameters attched to dummy responses.
· Program aborted when removing a spectrum with a response containing gain parameters, AND while that response was temporarily replaced with a dummy response.
· The 'save' command did not add the default .xcm extension for file names that included a path.
· A crash could occur if the EBOUNDS array wasn't the right size.
· It was not possible to plot 2 or more models in a multi-panel 'plot model' display.
v12.7.0 May 2011
The primary new feature of 12.7.0 is the addition of the Python module, PyXspec v0.9 beta. PyXspec is built and installed by defaulton most platforms along with the regular XSPEC build, and simply requires an "import xspec" statement to load into Python. XSPEC can now be run from object-oriented Python scripts, or interactively from a Python shell prompt. Detailed instructions can be found in PyXspec.pdf.
While most features of standard XSPEC are already supported in this beta release, some still remain to be implemented. Please let us know if any missing feature is of particular importance to you, or if you have suggestions and ideas for improvement.
Other new features:
· New models:
cplinear: Piecewise linear non-physical background model for low-count spectra developed for Chandra by Patrick Broos.
eqpair, eqtherm, compth: Paolo Coppi's hybrid hot plasma emission models.
vvapec, bvvapec: APEC models allowing all 30 elemental abundances to vary (for use with AtomDB 2.0).
zigm: Multiplicative model, computes the mean attenuation of the optical/UV spectrum by the intergalactic medium.
zashift, zmshift: Convolution models for applying redshifts to additive and multiplicative models respectively.
Also note that the default APEC model data files have been updated to AtomDB 2.0. This version of AtomDB includes contributions from more elements than earlier versions. When using the apec and vapec models these extra elements have Solar abundance by default. To change this use "xset APEC_TRACE_ABUND".
· The 'statistic' command may now be applied to individual spectra. This makes it possible to simultaneously fit spectra which require different fit statistics.
· Added the 'pgstat' option to the statistic command. This is similar to using 'cstat' with a background file except that the background is assumed to have Gaussian statistics (not Poisson) read from a STAT_ERR (and optionally SYS_ERR) column.
· Modified the pileup model for consistency with Sherpa and ISIS. A new parameter 'fracexpo' is added which should be set to the FRACEXPO keyword value in the ARF.
· It is now possible to choose proportional or fixed fit deltas from the startup Xspec.init file. The initial default setting is now proportional deltas rather than fixed deltas.
· Improvements made to the output generated during a fit. The parameter names are listed at the top of columns, not just their numbers. Column alignment has been improved, and is no longer limited to a maximum width of 5 columns.
· Added reporting of the Bayesian contribution (if any) to the fit statistic output.
Enhancements previously released as patches to 12.6.0:
· Initpackage now recognizes and builds files with .f03 extensions for Fortran 2003, and .f90 extensions for Fortran 90.
· Added a new 'fakeit' option for setting the fake background exposure time.
· Added a new 'tclout version' option for returning the XSPEC version string.
· Improved XSPEC's internal update mechanism to reduce the number of model calculations.
All bug fixes to v12.6.0 released as patches a - ab are included in v12.7.0. In addition the following problems have been corrected:
· A crash occurred if 'tclout notice energies' was performed on a spectrum containing only a dummy response with no channels.
· The 5 redundant 'xset' options (those which merely duplicate other existing XSPEC commands) weren't passing their arguments to the command handlers correctly.
· Fit error messages were misleading for the case where the data was missing a suitable response, or when the only existing models were inactive.
· A fatal error could occur in 'fakeit' when attempting to generate a background file while only a dummy was used for the response.
· The 'bayes' command handler was not properly handling the case where the prior type option string was abbreviated.
· A crash occurred when ‘flux’ was run in error mode and the specified energy was entirely outside the range of one or more spectra.
v12.6.0 March 2010
The main improvements in version 12.6.0 are to XSPEC's plotting capabilities:
· Multi-panel plotting is now supported for all combinations except contour plots. For example, "plot data model resid ratio" will produce a 4-panel plot on a single page. Up to 6 panels can be plotted in this manner.
· There are many choices for axis units. These can be selected using the "setplot energy" and "setplot wave" commands. For example, "setplot energy GeV" uses GeV on the x- and y-axes. "setplot wave" also has a new "perhz" option for displaying the Y-axis in 1/Hz units.
· The "setplot" command has a new "redshift <z>" option for shifting displayed energies to the source frame.
Other new features:
· New models: ireflect is a convolution model based on the pexriv code. sirf is a multiblackbody self-irradiated funnel
· The normalizations on all power-law models (ie. powerlaw, bknpow, bkn2pow, cutoffpl)can be changed to a flux over an energy range by setting POW_EMIN and POW_EMAX keywords in "xset". The powerlaw model then becomes equivalent to the pegpwlw model.
· The Compton reflection models (b/p)exr(a/i)v and (i)reflect have been restructured to use adaptive Gauss-Kronrod quadrature for the Greens' function integrals. The precision to which the integrals are calculated can be set allowing a trade-off between speed and precision.
· The wrapper functions additiveTable and multiplicativeTable give external C++ models access to XSPEC's table model interpolation routines (equivalent to the xsatbl and xsmtbl functions for Fortran models).
· The display of link expressions has been simplified to show only the parameter numbers and not the extraneous component information. Also "show model" will now only display the model components and not the individual parameters. The parameters can be seen with "show par".
Additional enhancements previously released as patches to 12.5.1:
· Added the solar abundance data set of Asplund, Grevesse, and Sauval (2006) to the list of available tables accessed with the "abund" command.
· New "tclout nchan" option for returning the number of channels in a spectrum. The "save" command now stores relative rather than absolute paths to allow easier porting to other machines.
· The recorn model component has been converted from a mixing to a multiplicative type. This allows a model to define multiple recorn components.
· A warning message is now issued if a user attempts to load a response for a source n when there are still slots to fill for source n-1. This is intended to catch cases where a user mistakenly reverses the source and spectrum number input to the "response" command.
All bug fixes to v12.5.1 released as patches a - o are included in v12.6.0. In addition the following problems have been corrected:
· It was possible for the addition of a systematic model error to actually decrease the overall variance, when it was applied to a zero-variance bin that was artificially increased by XSPEC for chi-square fitting.
· Bug in "plot ratio" when using "setplot wave" with Hz units. Y-axis model values < 10^-20 were not displayed in plot.
· The comptt model no longer stops and prompts the user when it fails during its incomplete gamma calculation.
· The powerlaw model has been modified to avoid a numerical instability that could occur if the index were within 10^-12 to 10^-15 of 1.0.
v12.5.1 Aug. 2009
· Gain parameters can now be used in the error, freeze, newpar, thaw, and untie commands by prefixing the command name with the letter 'r' (for "response parameter", the more general category to which gain parameters belong). Steppar can now also handle gain parameters. Gain parameters can be displayed either with "show parameter" or the new "show rparameter" option.
· The gain command syntax has changed when using multiple sources. To better conform with the rest of XSPEC, it now requires <source number>:<spectrum number> rather than the reverse.
· Gain parameter limit values can be stored in response files, using the keywords GSLOP_MIN, GSLOP_MAX, GOFFS_MIN, and GOFFS_MAX.
· All input and output data filenames can now include CFITSIO/FTOOLSextended-syntax for specifying particular HDUs. As a result, XSPEC can now handle files which contain spectra, ARFs and RMFs in multiple extensions.
· Partial derivative calculations during fitting can now be performed numerically rather than with an approximated analytical expression. This option is chosen in the Xspec.init initialization file.
· If a new minimum is found during a steppar run, steppar now prompts the user for acceptance of the new values. Also the delta statistic column of a steppar run is now obtainable with the tclout steppar delstat option.
· The output warning message has been improved in the case where Levenberg-Marquardt fitting runs into a zero diagonal element in the second derivative matrix. Similarly, the more frequent pegged-parameter messages (due to running into hard limits) is now output at higher chatter levels only.
· All calls to the xanlib dynamic memory allocation function udmget have been removed from the Fortran models in XSPEC's models library. The relevant code has been converted to C++. If a user's local models library still requires the udmget code, they'll need to run initpackage with the new -udmget option.
· Additional enhancements previously released as patches to 12.5.0:
· Setplot wave x-axis units can be toggled from Hz to angstroms through WAVE_PLOT_UNITS entry in Xspec.init file.
· New tclout gain and sigma options.
· New xs_getVersion function available for those linking their own programs to the XSPEC models library.
· The show parameters option can now take a range of parameters for displaying subsets.
· All bug fixes to v12.5.0 released as patches a - an are included in v12.5.1. In addition the following problems have been corrected.
· After running the ARF command, any gain previously applied to the associated RMF will be removed. Previously it was erroneously applying the gain to the new ARF.
· Additional header file inclusions needed in code files to compile with g++-4.4.0
· Extra line-feed characters removed from Ascii text files in the modelData directory. These were causing problems on Solaris 10 w/f90.
· The nthcomp model's internal arrays were hardcoded to a maximum size of 5000 energy bins. The size is now dynamically allocated. (This also affects the diskir model.)
· A Levenberg-Marquardt fit now immediately stops if the fit statistic becomes NaN due to an erroneous model calculation.
· C++-style comments have been removed from xsFortran.h for the benefit of users compiling their own C programs with the models library.
· Plotting fix for case where "setplot area" is selected and no models are currently loaded.
· Model parsing fix for case of nested parentheses with no '+' operator, ie. A(B(C*D)).
v12.5.0 Nov. 2008
· Two of the remaining unimplemented v11 commands have now been added.
· mdefine allows dynamic definition of models that can be expressed algebraicly.
· recornrm has been replaced by the recorn model. This allows the correction norm to be treated as a fit parameter, a better solution than the v11 recornrm command.
· The complete HTML help files are included in a tar file. These can be made available on a local machine if remote access is now available and selected in the Xspec.init file.
· Convolution components can now operate on multiplicative components. For example, in the model = (CM)A, the convolution component acts on only the multiplicative component. Previously this would have been treated the same as C(MA). The partcov partial covering model takes advantage of this new capability.
· There is a new simple way of estimating fluxes (and their errors) from parts of the model. Apply the cflux convolution model to the component(s) for which the flux is required.
· The following models have been added as standard
· diskir : irradiated disk
· kerrdisk : broad iron line from a disk around a Kerr BH
· nsmax : NS magnetic atmosphere
· nthcomp : thermally Comptonized continuum
· spexpcut : super-exponential cut-off
· swind1 : partially ionized absorbing material with velocity shear
· zxipcf : partial covering of partially ionized absorbing material
· cflux : calculate the flux from model component(s)
· kerrconv : broadening due to rotation around a Kerr BH
· partcov : partial covering modifier for absorption models
· simpl : Comptonization of a seed spectrum
· recorn : Vary the correction file normalization
· The writefits.tcl script writes filenames and current fit parameters and errors to a single row of a FITS file. This script can be used as a template for saving other information.
· A response of "/*" to a "y/n" prompt will jump out of the current operation and return to the XSPEC command prompt. This is particularly useful for escaping nested fits during an error command run.
· The units have been changed for setplot wave plots. model and ufspec have a y-axis in photons/cm^2/s/Hz, emodel and eufspec in Jy (10^-23 erg/cm^2/s/Hz), eemodel and eeufspec in erg/cm^2/s.
· Fakeit can now work with multiple-extension response files. It also works correctly when multiple models are in use (this was release in patch v12.4.0r).
· The active|inactive|options can be applied to the default (unnamed) model (released in patch v12.4.0v).
· Support for GLAST GBM extensions to the standard file formats including multiple response matrix extensions in the same file (released in patch 12.4.0am).
· There are additional diagnostics available at high chatter levels from MCMC chain runs. User's custom proposal classes have access to information about acceptances and rejections.
· Initial support for multicore processors using the OpenMP parallel processing compiler option. Multiplication of the model and response is performed in parallel across the multiple spectra in a datagroup.
· All bug fixes to v12.4.0 released as patches a - ar are included in v12.5.0. In addition the following problems have been corrected.
· When a runtime error is encountered during the calculation of a parameter's error bounds (using the error command), the value is now filled in with 0.0 rather than retaining its previous value.
· Steppar will now correctly step in reverse direction if the range values were entered in high-to-low order.
· Model expression parsing has been improved for nested expressions.
· Log file output has been fixed so '#' comments are placed correctly.
· The chi-square calculation includes the corfile contribution even if there is no background file associated with the spectrum.
· There are minor plotting fixes to the confidence line in 1-D steppar/margin plots, the rescaling of the Y=0 green line in lower-panel plots, and the Y-axis label in plot delchi.
· Tclout peakrsid no longer fails for a spectrum whose model was not assigned to source 1.
· The XSFunctions library now also depends on XSModel, requiring the addition of a -lXSModel flag to the Makefile of external programs linking with the XSPEC model functions library. (See Appendix F)
· The modelIonData model data files directory has been renamed to modelData.
· Portions of some model functions have been translated from Fortran to C++ to reduce use of the udmget memory allocation function. Future versions will remove all references to udmget.