Skip to content

Commit

Permalink
X-ray polarimetry - release v2.2.0 (#329)
Browse files Browse the repository at this point in the history
Modeling polarized X-ray signals has been implemented and examples added for simulating polarized pulses (Stokes parameters) using a couple of different atmosphere options. Support for polarized likelihood calculation has also been included. In addition, new integrators (with and without polarimetry) have been implemented to allow atmosphere interpolations with 5 parameters to be performed in 2 steps.

---------

Co-authored-by: Bas Dorsman <superbas1996@gmail.com>
  • Loading branch information
thjsal and Basdorsman authored Feb 6, 2024
1 parent 7b28d24 commit 6aeef9a
Show file tree
Hide file tree
Showing 57 changed files with 8,980 additions and 546 deletions.
39 changes: 39 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,45 @@ and this project adheres to
.. ^^^^^^^^^^^
[v2.2.0] - 2024-02-06
~~~~~~~~~~~~~~~~~~~~~

Summary
^^^^^^^

* Modeling polarized X-ray signals has been implemented and examples added for simulating polarized pulses (Stokes parameters) using a couple of different atmosphere options. Support for polarized likelihood calculation has also been included. In addition, new integrators (with and without polarimetry) have been implemented to allow atmosphere interpolations with 5 parameters to be performed in 2 steps.

Added
^^^^^

* Option to calculate and extract all the Stokes I, Q, and U signals as a function of energy and phase. This can be activated if giving ``stokes=True`` as an input parameter (default is ``stokes=False``) when initializing a photosphere object. The computed (photosphere) stokes signals can then be obtained using the ``signal``, ``signalQ``, and ``signalU`` functions of the Photosphere class. For using Stokes signals in the likelihood calculation, a separate signal object of the Signal class needs to be created for each Stokes signal so that the type of the signal is specified using a ``stokes`` input argument. A list of all the signals can be then given to the likelihood object when initializing it. (T.S.)

* Polarized alternatives for integrators in ``xpsi/cellmesh/integratorIQU_...``, which include the transportation of polarization angle from the star to the observer using the formalism of `Loktev et al. (2020) <https://doi.org/10.1051/0004-6361/202039134>`_. These are used when setting ``stokes=True`` as instructed above. (T.S.)

* A new "split" integrator in ``xpsi/cellmesh/``, which allows atmosphere interpolations with 5 parameters to be performed in 2 steps: first interpolating 3 parameters that do not vary within the hot region (creating a 2D data set) and then interpolating in 2D for each photon energy and emission angle. This can be activated by giving ``split=True`` (default is ``split=False``) input parameter when initializing a hotregion object. Setting ``split=True`` will automatically determine also the atmosphere option. (B.D.)

* New atmosphere options in ``xpsi/cellmesh/surface_radiation_field/``. See the docstring of the HotRegion class for all the options. (B.D., T.S.)

* Polarization tutorial to the documentation pages. (T.S.)

* Example scripts for calculating polarized pulses in ``examples/examples_modeling_tutorial/`` using either an analytical polarized burst atmosphere (``TestRun_Pol.py``) or a numerical 5D atmosphere model (``TestRun_PolNum_split_1spot.py`` or ``TestRun_PolNum_split_inference.py``). (T.S.)

* Example scripts for combining X-PSI to `ixpeobssim <https://github.com/lucabaldini/ixpeobssim>`_ for simulating polarized X-ray observations in ``examples/examples_modeling_tutorial/ixpeobssim/``. See instructions in the documentation. (T.S.)

Changed
^^^^^^^

* To allow modeling of all Stokes parameters, no error is anymore raised if the data have negative values in ``xpsi/Data.py``. (T.S.)

* No error is anymore raised in ``xpsi/Data.py`` if setting the first and last energy channel to be the same channel. (T.S.)

Attribution
^^^^^^^^^^^

Tuomo Salmi (T.S.),
Bas Dorsman (B.D.)


[v2.1.2] - 2024-02-05
~~~~~~~~~~~~~~~~~~~~~

Expand Down
372 changes: 223 additions & 149 deletions docs/source/Emitting_patterns_2Dprojection.ipynb

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions docs/source/Example_script_and_modules.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,21 @@ Fourth script called `examples/examples_modeling_tutorial/TestRun_NumBeam.py`__
.. _t4: https://github.com/xpsi-group/xpsi/tree/main/examples/examples_modeling_tutorial/TestRun_NumBeam.py

__ t4_

Fifth script called `examples/examples_modeling_tutorial/TestRun_Pol.py`__ is an example script for producing polarized pulses in X-PSI using a simple analytical model for the atmosphere emission.

.. _t5: https://github.com/xpsi-group/xpsi/tree/main/examples/examples_modeling_tutorial/TestRun_Pol.py

__ t5_

Sixth script called `examples/examples_modeling_tutorial/TestRun_PolNum_split_1spot.py`__ is an example script for producing polarized pulses in X-PSI using a numerical atmosphere model with 3+2 dimensional interpolation.

.. _t6: https://github.com/xpsi-group/xpsi/tree/main/examples/examples_modeling_tutorial/TestRun_PolNum_split_1spot.py

__ t6_

Seventh script called `examples/examples_modeling_tutorial/TestRun_PolNum_split_inference.py`__ is a preliminary example script for producing and analyzing polarized pulses in X-PSI using a numerical atmosphere model with 3+2 dimensional interpolation and ST+PDT spot model.

.. _t7: https://github.com/xpsi-group/xpsi/tree/main/examples/examples_modeling_tutorial/TestRun_PolNum_split_inference.py

__ t7_
8 changes: 4 additions & 4 deletions docs/source/HPC_systems.rst
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Use the last command to check for the presence of shared objects.
Further details on MKL issues can be found in this `thread <https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/mkl-fails-to-load/m-p/1155538>`_

We also need to the set the environment variable for library path to point at
We also need to set the environment variable for library path to point at
MultiNest:

.. code-block:: bash
Expand Down Expand Up @@ -200,11 +200,11 @@ If you ever need to reinstall, first clean to recompile C files:
.. note::

We typically do not used the :mod:`~xpsi.PostProcessing` module, but
We typically do not use the :mod:`~xpsi.PostProcessing` module, but
instead ``rsync`` output files to a local system to perform plotting. This
circumvents any potential backend problems and permits straightforward use
of IPython for interactive plotting. However, if one wishes to use it on an
HPC, it would require installation of `GetDist` and `Nestcheck`. See
HPC, it would require the installation of `GetDist` and `Nestcheck`. See
:ref:`install` page for relevant details.


Expand Down Expand Up @@ -378,7 +378,7 @@ Download and Install the MultiNest package in your ``$HOME`` (e.g. in ``~/Softwa
-DCMAKE_Fortran_COMPILER=mpiifort ..
make
## Check that librairies have been compiled and are present
## Check that libraries have been compiled and are present
ls ../lib
Install pymultinest in your ``$HOME`` (e.g. in ``~/Softwares``:
Expand Down
166 changes: 103 additions & 63 deletions docs/source/Hot_region_complexity.ipynb

Large diffs are not rendered by default.

98 changes: 60 additions & 38 deletions docs/source/Instrument_synergy.ipynb

Large diffs are not rendered by default.

272 changes: 160 additions & 112 deletions docs/source/Modeling.ipynb

Large diffs are not rendered by default.

81 changes: 48 additions & 33 deletions docs/source/Modeling_without_statistics.ipynb

Large diffs are not rendered by default.

Loading

0 comments on commit 6aeef9a

Please sign in to comment.