=================
Calibration class
=================
`pesummary` handles calibration data through a custom `Calibration` class. This
`Calibration` class is inherited from the `numpy.ndarray` class. Multiple
calibration envelopes are stored in the `CalibrationDict` class.
Initializing the Calibration class
----------------------------------
The `Calibration` class is initialized with an 7d array. Each of the columns
should represent the Frequency, Median Magnitude, Phase (Rad),
-1 Sigma Magnitude, -1 Sigma Phase, +1 Sigma Magnitude, +1 Sigma Phase,
.. code-block:: python
>>> from pesummary.gw.file.calibration import Calibration
>>> import numpy as np
>>> frequencies = [0, 0.125, 0.25]
>>> magnitude = [0.5, 0.5, 0.5]
>>> phase = [0.1, 0.1, 0.1]
>>> magnitude_lower = magnitude_upper = [0, 0, 0]
>>> phase_lower = phase_upper = [0, 0, 0]
>>> calibration_data = np.vstack([magnitude, phase, magnitude_lower, phase_lower, magnitude_upper, phase_upper]).T
>>> calibration = Calibration(calibration_data)
Using the Calibration object
----------------------------
The `Calibration` object allows for you to save the stored calibration data with
ease. This can be done with the following:
.. code-block:: python
>>> calibration.save_to_file("new_calibration.dat", delimiter="\t")
Initializing the CalibrationDict class
--------------------------------------
The `CaibrationDict` class is initialized with a dictionary of 7d array's
containing the Frequency, Median Magnitude, Phase (Rad),
-1 Sigma Magnitude, -1 Sigma Phase, +1 Sigma Magnitude, +1 Sigma Phase
for each detector you are interested in,
.. code-block:: python
>>> from pesummary.gw.file.calibration import CalibrationDict
>>> calibration_data = {
... "H1": [[0.0, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0],
... [0.125, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0],
... [0.25, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0]],
... "V1": [[0.0, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0],
... [0.125, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0],
... [0.25, 0.5, 0.1, 0.0, 0.0, 0.0, 0.0]]
... }
>>> cal_dict = CalibrationDict(calibration_data)
The data for each detector is stored as a `Calibration` object:
.. code-block:: python
>>> type(cal_dict["H1"])
<class 'pesummary.gw.file.calibration.Calibration'>
Using the CalibrationDict object
--------------------------------
The `CalibrationDict` object has extra helper functions and properties to make
it easier for you to extract the information stored within. For example, you can
list the detectors stored with,
.. code-block:: python
>>> cal_dict.detectors
['H1', 'V1']
The frequency and magnitude data for a specific IFO can also be extracted with,
.. code-block:: python
>>> cal_dict["H1"].frequencies
array([0., 0.125, 0.25])
>>> cal_dict["H1"].magnitude
array([0.5, 0.5, 0.5])
`pesummary.gw.file.calibration.Calibration`
-------------------------------------------
.. autoclass:: pesummary.gw.file.calibration.Calibration
:members:
`pesummary.gw.file.calibration.CalibrationDict`
-----------------------------------------------
.. autoclass:: pesummary.gw.file.calibration.CalibrationDict
:members: