.. _v3_to_v4:

Important API Changes Between pyXSIM Version 3 and Version 4
============================================================

This section documents the most important API changes between
pyXSIM version 3 and 4, with code examples showing how to update
your code for version 4.

API Changes to Thermal Source Models
------------------------------------

The class ``ThermalSourceModel`` in version 3 of pyXSIM has now been
subclassed into three separate classes,
:class:`~pyxsim.source_models.thermal_sources.CIESourceModel`,
:class:`~pyxsim.source_models.thermal_sources.NEISourceModel`, and
:class:`~pyxsim.source_models.thermal_sources.IGMSourceModel`.
``ThermalSourceModel`` itself should no longer be used as a standalone
class. In order to replicate the functionality of the previously existing
``ThermalSourceModel`` class for CIE spectra, change (for example):

.. code-block:: python

    import pyxsim

    source_model = pyxsim.ThermalSourceModel("apec", 0.1, 10.0, 5000, 0.3)

to:

.. code-block:: python

    import pyxsim

    source_model = pyxsim.CIESourceModel("apec", 0.1, 10.0, 5000, 0.3)

and for NEI sources, change:

.. code-block:: python

    import pyxsim

    source_model = pyxsim.ThermalSourceModel("apec", 0.1, 10.0, 5000,
                                             ("gas", "metallicity"), var_elem=var_elem,
                                             nei=True)

to:

.. code-block:: python

    import pyxsim

    source_model = pyxsim.NEISourceModel(0.1, 10.0, 5000, var_elem)

See :ref:`thermal-sources` for more details.