Abstract
We present a progress report on the development of PyXstar, a Python package to manage the data (input, output, intermediate, atomic database, and model-grids) associated with the xstar code for treating photoionized and collisionally ionized plasmas. The PyXstar modular structure and database retrieval scheme are described, and its functionality is illustrated with Python functions and classes for performing database searches. We briefly compare PyXstar with two other Python spectrum modeling tools: PyNeb and PyAtomDB.
Graphic abstract
![](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figa_HTML.png)
Similar content being viewed by others
Avoid common mistakes on your manuscript.
1 Introduction
xstar [1, 2] is a plasma modeling code widely used by the astronomical X-ray community. It generates high-resolution synthetic spectra by deriving from comprehensive application of relevant physical processes the ionic charge states and level populations of the plasma atomic constituents assuming steady-state equilibrium in a photoionized or collisionally ionized gas. The scientific accuracy of xstar thus relies on an extensive atomic database meticulously compiled in the past 20 years from in-house computations (see [3, 4] and list of references therein) and a variety of other sources (e.g., [5,6,7]). Due to its extensive treatment of photoionization, particularly at the high energies associated with the K edges of ions with \(Z\le 30\), and of high-density effects [8], xstar is useful in the modeling of luminous compact objects such as accreting black holes and neutron stars.
With the establishment of the big data era [9,10,11], astronomical spectrum modeling has evolved from running monolithic codes with well-prescribed data outputs to custom workflows, often deployed in high-performance-computing (HPC) environments, which utilize different tools put together with Python. Furthermore, Python is often used beyond model fitting to understand the details of physics of the best-fitting model to constrain with greater versatility the physical mechanisms in hand or discover new ones. We are following this trend by upgrading xstar into a general-purpose calculator of non-LTE plasmas (in particular photoionized and collisionally ionized gases) based on Python tools referred to collectively as PyXstar. Similar initiatives have already been pursued by other spectrum modeling codes such as PyAtomDBFootnote 1 [12], PyNebFootnote 2 [13, 14], and ChiantiPyFootnote 3 [6], which the astronomical community has well received.
PyXstar currently comprises four independent modules allowing the user to: map and exploit the xstar FITSFootnote 4 output files; get “under the hood” to decipher the intricate intermediate steps of synthetic spectrum generation; run model grids; and interact with the atomic database. Regarding the latter, the user is encouraged to visualize, revise, and modify the current datasets if custom-made versions are desired. Moreover, the curation, provenance, and evaluation (accuracy and completeness) of the database are of prime importance. Steps are being carried out to facilitate database maintenance by storing the master version in a relational model accessible through the SQLiteFootnote 5 library. The ultimate goal of PyXstar is to enable scientists to visualize easily the atomic species and specific spectral features that the plasma imprints on the observed spectrum, and additionally, to understand the assumed equilibrium by including, for example, which processes contribute to the heating and cooling.
The present report gives an overview of the work in progress. In Sect. 2, we describe the technical profile of the xstar database, its data curation policies, and the PyXstar database retrieval scheme. We go over the package modular structure in Sect. 3, illustrating its functionality in Sects. 4–5 with database retrieval functions and objects. Brief comparisons with other Python modules are given in Sect. 6 followed by our conclusions in Sect. 7.
2 The XSTAR database
xstar contains an atomic database of around 870 MB of radiative and collisional data to empower the modeling of plasmas of light chemical elements (\(Z\le 30\)) at electron temperatures \(T> 10^4\) K and densities \(n_e \lesssim 10^{24}\) cm\(^{-3}\). The master database currently consists of flat ASCII files that are transcribed to a FITS file before each public version is released. It is based on four long arrays of integers, floats, and characters that are read into main memory when the code is invoked. A pointer structure is derived after this initial step to ensure fast direct database access during the complete plasma modeling process.
The xstar database curation policies regarding new data and maintenance specify that the tabulations and units of the original sources are maintained. As a result, the database spans an extensive variety of rate and data types that have been inventoried in [2, 4]. In the face of this complexity, PyXstar aims to give the user-expedited data access and manipulation capabilities through a series of easy-to-use Python functions and object classes.
Data manipulation scheme of TOPbase, the Opacity Project atomic database, based on two data structures: the view and the table. Retrieved datasets can be viewed or plotted in a terminal, printed, or stored on disk. Figure is reproduced from Fig. 2 of [15] with permission from Revista Mexicana de Astronomía y Astrofísica (http://www.astroscu.unam.mx/RMxAA)
The PyXstar database retrieval scheme follows the view–table framework implemented in the development of TOPbase,Footnote 6 the Opacity Project atomic database [15] (see Fig. 1). In this approach, a disk data search is performed through a single command portrayed by a series of positional arguments referred to as the descriptor that leads to a view of the database in main memory. The view can then be further manipulated (e.g., row selection, exclusion, and sorting) in main memory through the table logical data structure attending the user’s ultimate requirements. Views and tables can be displayed on the screen, printed, or disk stored and retrieved. Table graphic processing is also considered. The original TOPbase user interface was command-based and accessed remotely from the database host at the Centre de Données astronomiques de Strasbourg (CDSFootnote 7) through the SSH (telnet at the time) network protocol. However, with the advent of the World Wide Web in the early 1990s, the user interface was rapidly transcribed to the HTML markup language reducing the functionality of the table structure [16].
A key difference of the PyXstar data retrieval scheme is that database searches are performed in main memory. Views are procured through a Python function by means of descriptors specified in terms of non-positional keyword arguments. The table data structure is fully exploited with Pandas dataframesFootnote 8 or Astropy data tablesFootnote 9 for comprehensive, easy-to-use big-data analysis. Further data manipulation capabilities are brought about by the introduction of data objects implemented through Python classes. A central class is Ion bearing the basic attributes of an ionic species such as its atomic number, electron number, charge, ionization potential, and ground-level configuration. This class also activates two subclasses, Level and Transition, with a second layer of attributes and methods: for the former, the level configuration, spin multiplicity, total orbital angular momentum, statistical weight, energy, radiative and Auger widths, and for the latter, the transition wavelength, A-value, Auger rate, and effective collision strengths. Inter-class methods are also implemented; for instance, the Level subclass also includes the level radiative and Auger widths, both derived through the Transition subclass.
3 PyXstar
The PyXstar blueprint currently consists of four modules that concentrate on well-defined tasks to enhance the user experience and plasma modeling scope of the xstar code. We briefly describe them in Sects. 3.1–3.4.
3.1 PyXstar_model
This module streamlines the running of xstar models from a JupyterFootnote 10 notebook in different computing environments and provides Python functions to access and manipulate the data contained in the FITS output files. Ample use is made of the astropy.io.fitsFootnote 11 Python module.
The first version of this module addresses three running environments: a local HEASoftFootnote 12 installation; a local DockerFootnote 13 container; and a remote Docker container through SSH tunneling.Footnote 14 Input parameters can be specified through a Python dictionary or an interactive Jupyter widget (IPyWidgetsFootnote 15). Datasets include among others: plasma parameters; ionic abundances and column densities; heating and cooling rates; and line, radiative recombination, and continuum spectra.
3.2 PyXstar_uth
We show in Fig. 2 the flowchart of an xstar model consisting of different plasma spatial zones. From a set of input parameters that include, among others, the elemental abundances, temperature, density, ionization parameter, luminosity, and turbulence velocity, the code reads from disk the atomic database, works out a set of pointers to access its components, and determines the radiation flux. It then proceeds to compute the ionization balance and level populations by imposing thermal equilibrium that results in a temperature and tabulations of the line and continuum opacities and emissivities. The inter-zone heat transfer is worked out, and the code proceeds with the following iteration. Several passes of the zonal cycle can be prescribed to ensure the desired convergence.
The aim behind PyXstar_uth is to compartmentalize this bicycle into Python functions and classes to give the user interactive and scripting potential at every stage and to foster access of the intermediary data unavailable when running the code in the PyXstar_model mode. The Python functions have been coded as wrappers of the Fortran xstar routines using the F2PYFootnote 16 interface generator. We are also rewriting these Python wrappers in CythonFootnote 17 to compare performance and with the intention to port xstar to a more modern programming language.
Two types of data are addressed by PyXstar_uth: (i) the basic atomic parameters encompassing the database and (ii) derived data computed in plasma models such as transition rates, heating–cooling rates, level populations, ionization fractions, opacities, and emissivities. In the present report, we are mainly concerned with the initial setup stage (see Fig. 2) when the atomic database is loaded into main memory; thus, the chosen Python functions and classes are those destined to display information about its components and methods, which are further described in Sect. 4.
3.3 PyXstar_grid
Within the context of the HEASoft spectral fitting code xspec,Footnote 18 grids of xstar models can be implemented with the xstar2xspec Perl script. From user specifications, the FTOOLS xstinitable and xstar2table create a job list that is run and consolidated into table models. A parallel version of this procedure has been devised independently in the C++ programming language with the Message Passing Interface (MPI) [17]. In the present work, we have developed a Python version of the xstar2xspec script based on the FTOOLS Python wrappers of HeasSoftPy,Footnote 19 which runs in parallel in a multi-core processor through the multiprocessingFootnote 20 module.
3.4 PyXstar_DB
As mentioned in Sect. 2, the master xstar database is structured as a collection of flat ASCII files that do not conform to a relational model, thus making maintenance and updating time-consuming. PyXstar_DB remaps the database onto an SQLite engine diminishing record indexing and reinforcing table relationships through keys. Dataset provenance and completeness are high-priority issues. Implementation of the new database is leading to a more comprehensive and simplified inventory of the xstar data and rate types.
4 Database function
The function in PyXstar_uth to display components of the atomic database
requires the following keyword arguments: \(\texttt{ion}\) identifying of the ionic species in xstar notation (e.g., ‘o_iii’) or the tuple (Z, N) with its atomic (Z) and electron (N) numbers; \(\texttt{rtype}\) the dataset of interest specified by a character acronym or the corresponding xstar ratetype integer [3, 4]; and the integers \(\texttt{llo}\) and \(\texttt{lup}\) denoting, respectively, the lower- and upper-level indices of the ion. The default for the lower level (\(\texttt{llo}=0\)) returns all the transitions with \(\texttt{llo}< \texttt{lup}\) while that for the upper level (\(\texttt{lup}=0\)) returns all the transitions with \(\texttt{lup}> \texttt{llo}\). The option \(\texttt{llo}= \texttt{lup}=0\) returns all the transitions of the ion.
PyXstar_uth is invoked in the usual Python manner uploading the atomic database to main memory where it will reside for the rest of the user interactions. The graphic library Matplotlib and the module of mathematical functions math are also conveniently imported in this initial step:
![figure b](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figb_HTML.png)
We have adopted here and in Sects. 4.1–4.3 the cell-based format of the Jupyter notebook interface. We illustrate the functionality of \(\mathtt {get\_data()}\) with database searches of energy levels, radiative bound–bound transitions, and photoionization cross sections.
4.1 Energy levels
The function displays the attributes of energy level llo in ion. The default, \(\mathtt {llo=0}\), displays all the energy levels, while \(\mathtt {llo=-1}\) does so for the continuum; i.e., the ionization potential of the species. As an example in the cell below, we search for all the levels of C-like O iii:
![figure c](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figc_HTML.png)
The search output is displayed in a Pandas dataframe whose concise and comprehensive data visualization profile is remarkable. It may also be noted that the level electron configuration in the xstar database abides by the Witthoeft notation delineated in “Appendix A.”
4.2 Bound–bound radiative transitions
Radiative attributes (wavelength, A-value, and gf-value) for a bound–bound transition between levels \(\texttt{llo}\) and \(\texttt{lup}\) of ion are also listed with this function. In the cell below, we retrieve the respective data for the transition between levels 7 and 3 in O iii:
![figure d](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figd_HTML.png)
It may be seen that the output dataframe can conveniently list records longer than the monitor width by using the continuation character ‘/’.
4.3 Photoionization cross sections
The function retrieves fits or tabulations of the photoionization cross sections \(\sigma (E)\) as a function of energy for the transition between level \(\texttt{llo}\) of the parent ion leaving the daughter ion in level \(\texttt{lup}\). We search below for the photoionization cross section of the ground level of O iii leaving O iv in its ground level:
![figure e](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Fige_HTML.png)
Two data products are returned, y[0] listing the transition identifiers
![figure f](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figf_HTML.png)
showing that the cross section has two contributions (data types 49 and 53):
![figure g](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figg_HTML.png)
The correspondence between the \(\mathtt {y[0]}\) transition identifiers and \(\mathtt {y[1]}\) tabulations is
We can then plot the cross section using the Matplotlib graphic library,
![figure h](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figh_HTML.png)
showing the two contributions. This plot is useful to check matching accuracy in a multi-component method frequently used in the xstar database to represent cross sections over a wide energy range. The figure also illustrates how data in Pandas dataframes are readily plotted with Matplotlib; e.g., applying the anonymous Python lambda function to process column values.
5 Data objects
Further programming pathways to make the most of the xstar database components can be rendered through data objects in terms of Python classes. We introduce the Ion class exhibiting several attributes and two subclasses: Level and Transition. To examine their possibilities, we instantiate the class with O iii and list its attributes
![figure i](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figi_HTML.png)
![figure j](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figj_HTML.png)
The class attributes of the instantiated ion may be accessed with the usual dot notation; for instance, the ionization potential
![figure k](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figk_HTML.png)
Similarly, the methods of the Level and Transition subclasses can be inventoried
![figure l](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figl_HTML.png)
![figure m](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figm_HTML.png)
and accessed
![figure n](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Fign_HTML.png)
![figure o](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figo_HTML.png)
The default \(\mathtt {llo=lup=0}\) gives the whole dataset as a list of tuples.
6 Comparison with other spectral modeling tools
We briefly review here two spectral modeling tools that use Python interfaces to display their atomic databases.
6.1 PyNeb
PyNeb [13, 14] is a Python package widely used in nebular physics for the analysis of emission lines. Relying on an extensive atomic database, it solves the equilibrium equations to obtain the level populations, critical densities, and line emissivities. By comparing the theoretical emissivity ratios with observed line intensity ratios, the electron temperature and density and the chemical abundances may be estimated.
In the object-oriented architecture of PyNeb, the ion object is implemented through the Atom and RecAtom classes with a stream of methods to tabulate and plot the radiative and collisional data. For instance, to list the effective collision strength for the transition between levels 2 and 1 in O iii at \(T=10^4\) K, the atomic data files are fetched, the ion is instantiated, and the parameter is listed:
![figure p](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figp_HTML.png)
A salient aspect of the database curation of this system is its reliance on collections rather than selections of available datasets. The latter are transcribed to a prescribed format and laboriously re-indexed to match the NIST energy-level order [7], which is standard throughout the database. The default datasets are carefully appointed, but their substitution with other listed datasets in any spectral model is straightforward. This option makes PyNeb particularly useful in determining the impact of the atomic data on nebular plasma models [18] and in atomic data assessment [19, 20].
Atomic datasets in xstar, on the other hand, are mostly custom-computed or selected from other databases, and when updating, those to be replaced are discarded. Furthermore, it is considerably more difficult to replace datasets (e.g., partial photoionization cross sections) piecemeal for an N-electron ion in xstar as they can be tightly coupled to those of the (\(N{-}1\))-electron system.
6.2 PyAtomDB
AtomDB [12] is an atomic database compiled to underpin the spectral modeling of collisionally excited plasmas mainly in the ultraviolet and X-ray. Spectral modeling is carried out with the PyAtomDB Python package that replaced the previous apec C code. Although it is mainly tailored to compute derived data from the database, e.g., rate coefficients, level populations, and charge state distributions, PyAtomDB also allows the interactive viewing of the raw atomic parameters.
For instance, to get the A-value of transition 2–1 in O iii, the respective atomic data file is loaded to list its headings and attributes:
![figure q](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figq_HTML.png)
![figure r](http://media.springernature.com/lw685/springer-static/image/art%3A10.1140%2Fepjd%2Fs10053-024-00879-7/MediaObjects/10053_2024_879_Figr_HTML.png)
It may be noted that the requested data type is indicated by a character string, ‘LA’ (we have implemented similar acronyms to denote atomic data types in PyXstar) and that the source references are included in the transition attributes.
An interesting aspect of the PyAtomDB database views is that the requested dataset is downloaded directly from the host server the first time it is used to be then addressed locally for further local manipulation; thus, the user has the possibility of managing the database files in home file space. In contrast, the complete PyXstar atomic database is on local disk and uploaded to main memory when the module is imported. This leads to better performance but involves larger data volumes. Moreover, the PyAtomDB output data are formatted as Python dictionaries and lists or FITS files, while PyXstar interfaces with Pandas dataframes that certainly uplifts data processing and analysis. Finally, PyAtomDB has a module with a wide variety of useful functions to manipulate atomic parameters to facilitate data processing.
7 Conclusions
Within the context of the atomic database of the spectral modeling code xstar, we have given an overview of current developments of a Python package for up-scaling its data processing capabilities. These broadly involve the input, output, raw, and intermediate data with both plasma modeling and database curation in mind.
For performance, functions dealing with the raw and intermediate data have been coded as Python wrappers of the xstar Fortran subroutines. However, Cython versions have also been implemented for comparison and to look for alternatives to ensure long-term sustainability and maintenance of the system. The use of Pandas dataframes for data processing has been emphasized as well as the translation of the database from flat ASCII files to a relational model using the SQLite machinery. The ultimate intent is to allow the user to modify the atomic datasets in plasma modeling.
Data Availability Statement
The manuscript has associated data in a data repository. [Author’s comment: The xstar atomic database is available when the code is downloaded as a standalone package from the NASA High Energy Astrophysics Science Archive Research Center [HEASARC (https://heasarc.gsfc.nasa.gov/docs/software/lheasoft/xstar/xstar.html)].
Code Availability Statement
Beta versions of the PyXstar_model and PyXstar_grid modules are available from the corresponding author upon request.
Notes
References
T. Kallman, M. Bautista, Photoionization and high-density gas. Astrophys. J. Suppl. Ser. 133(1), 221–253 (2001). https://doi.org/10.1086/319184
M.A. Bautista, T.R. Kallman, The XSTAR atomic database. Astrophys. J. Suppl. Ser. 134(1), 139–149 (2001). https://doi.org/10.1086/320363
T.R. Kallman, P. Palmeri, M.A. Bautista, C. Mendoza, J.H. Krolik, Photoionization modeling and the K lines of iron. Astrophys. J. Suppl. Ser. 155(2), 675–701 (2004). https://doi.org/10.1086/424039. arXiv:astro-ph/0405210 [astro-ph]
C. Mendoza, M.A. Bautista, J. Deprince, J.A. García, E. Gatuzz, T.W. Gorczyca, T.R. Kallman, P. Palmeri, P. Quinet, M.C. Witthoeft, The XSTAR atomic database. Atoms 9(1), 12 (2021). https://doi.org/10.3390/atoms9010012. arXiv:2012.02041 [astro-ph.IM]
H.P. Summers, M.G. O’Mullane, A.D. Whiteford, N.R. Badnell, S.D. Loch, ADAS: atomic data, modelling and analysis for fusion, in Atomic and Molecular Data and Their Applications, AIP Conference Series, vol. 901, ed. by E. Roueff (2007), pp. 239–248. https://doi.org/10.1063/1.2727374
K.P. Dere, G. Del Zanna, P.R. Young, E. Landi, CHIANTI-an atomic database for emission lines. XVII. Version 10.1: revised ionization and recombination rates and other updates. Astrophys. J. Suppl. Ser. 268(2), 52 (2023). https://doi.org/10.3847/1538-4365/acec79. arXiv:2305.15221 [physics.atom-ph]
A. Kramida, Y. Ralchenko, J. Reader, NIST ASD Team, NIST Atomic Spectra Database (ver. 5.11) [2024, February 14]. National Institute of Standards and Technology, Gaithersburg, MD (2023). https://physics.nist.gov/asd
T. Kallman, M. Bautista, J. Deprince, J.A. García, C. Mendoza, A. Ogorzalek, P. Palmeri, P. Quinet, Photoionization models for high-density gas. Astrophys. J. 908(1), 94 (2021). https://doi.org/10.3847/1538-4357/abccd6. arXiv:2011.10603 [astro-ph.HE]
T. Hey, S. Tansley, K. Tolle, J. Gray, The Fourth Paradigm: Data-Intensive Scientific Discovery (Microsoft Research, Redmond, 2009)
C.R. Fierro-Santillán, J. Klapp, L.D.G. Sigalotti, J. Zsargó, M. Hareter, Analysis of spectral lines in large databases of synthetic spectra for massive stars. Astron. J. 161(3), 121 (2021). https://doi.org/10.3847/1538-3881/abd950
G. Duniam, V.V. Kitaeff, A. Wicenec, Data modelling approaches to astronomical data: mapping large spectral line data cubes to dimensional data models. Astron. Comput. 38, 100539 (2022). https://doi.org/10.1016/j.ascom.2021.100539
A.R. Foster, K. Heuer, PyAtomDB: extending the AtomDB atomic database to model new plasma processes and uncertainties. Atoms 8(3), 49 (2020). https://doi.org/10.3390/atoms8030049
V. Luridiana, C. Morisset, R.A. Shaw, PyNeb: a new software for the analysis of emission lines, in Planetary Nebulae: An Eye to the Future, vol. 283 (2012), pp. 422–423. https://doi.org/10.1017/S1743921312011738
V. Luridiana, C. Morisset, R.A. Shaw, PyNeb: a new tool for analyzing emission lines. I. Code description and validation of results. Astron. Astrophys. 573, 42 (2015). https://doi.org/10.1051/0004-6361/201323152. arXiv:1410.6662 [astro-ph.IM]
W. Cunto, C. Mendoza, The opacity project—the topbase atomic database. Rev. Mex. Astron. Astr. 23, 107 (1992)
W. Cunto, C. Mendoza, F. Ochsenbein, C.J. Zeippen, TOPbase at the CDS. Astron. Astrophys. 275, 5–8 (1993)
A. Danehkar, M.A. Nowak, J.C. Lee, R.K. Smith, MPI_XSTAR: MPI-based parallelization of the XSTAR photoionization program. PASP 130(984), 024501 (2018). https://doi.org/10.1088/1538-3873/aa9dff. arXiv:1712.00343 [astro-ph.HE]
L. Juan de Dios, M. Rodríguez, Atomic data and the density structures of planetary nebulae. Mon. Not. R. Astron. Soc. 507(4), 5331–5339 (2021). https://doi.org/10.1093/mnras/stab2488. arXiv:2108.13013 [astro-ph.GA]
C. Morisset, V. Luridiana, J. García-Rojas, V. Gómez-Llanos, M. Bautista, C. Mendoza, Atomic data assessment with PyNeb. Atoms 8(4), 66 (2020). https://doi.org/10.3390/atoms8040066. arXiv:2009.10586 [astro-ph.GA]
C. Mendoza, J.E. Méndez-Delgado, M. Bautista, J. García-Rojas, C. Morisset, Atomic data assessment with PyNeb: radiative and electron impact excitation rates for [Fe II] and [Fe III]. Atoms 11(4), 63 (2023). https://doi.org/10.3390/atoms11040063. arXiv:2304.01298 [astro-ph.GA]
Acknowledgements
We gratefully acknowledge private communications with Michael Witthoeft (NASA Goddard Space Flight Center and ADNET Systems Inc.) regarding his electron-configuration notation for atomic levels and with Manuel Bautista (US Department of Energy) for a report on the development of PyXstar_DB.
Funding
The material is based upon work supported by NASA under Award Number 80GSFC21M0002. CM acknowledges support from the Astrophysics Research and Analysis (APRA) Program under Grant 22-APRA-0101.
Author information
Authors and Affiliations
Contributions
All authors contributed to the conceptualization, development, and analysis of the content of the paper and revision of the manuscript.
Corresponding author
Additional information
Dr. Claudio Mendoza passed away during the final stages of the preparation of this manuscript. His obituary will appear separately in the journal Atoms.
Appendix A: The Witthoeft configuration notation
Appendix A: The Witthoeft configuration notation
In the xstar database, electron configuration assignments for atomic levels abide by the Witthoeft notation. In this notation, a subshell is represented by the integer triplet nlp, where n is the principal quantum number and l the orbital angular momentum quantum number of the electron orbital, while p denotes the subshell electron occupancy (number of electrons). The notation begins:
-
with the last filled subshell if there are no previous fully empty subshells;
-
otherwise, with the first fully empty subshell (zero occupancy) or the first partially filled subshell;
-
no other fully empty subshells are included;
-
subsequent filled and partially filled subshells are separated by dots;
-
and ends with the level spectroscopic term \(ML\_J\), where \(M=2S+1\) is the total spin multiplicity, L the total orbital angular momentum quantum number, and J the total angular quantum number as an integer or half-integer value.
For instance, the ground level of hydrogen is assigned the configuration \(\mathtt {1s1.2S\_1/2}\), while the first excited state is denoted by \(\mathtt {1s0.2s1.2S\_1/2}\). The ground level of O iii is assigned \(\mathtt {2p2.3P\_0}\); the first odd-parity excited level \(\mathtt {2s1.2p3.5S\_2}\), and the first K-vacancy level \(\mathtt {1s1.2s2.2p3.5S\_2}\).
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Mendoza, C., Kallman, T.R., Ballhausen, R. et al. Xstar atomic database: the PyXstar package. Eur. Phys. J. D 78, 93 (2024). https://doi.org/10.1140/epjd/s10053-024-00879-7
Received:
Accepted:
Published:
DOI: https://doi.org/10.1140/epjd/s10053-024-00879-7