eztaox.kernels.transfer_function
================================

.. py:module:: eztaox.kernels.transfer_function

.. autoapi-nested-parse::

   Transfer functions



Classes
-------

.. autoapisummary::

   eztaox.kernels.transfer_function.TransferFunction
   eztaox.kernels.transfer_function.GaussianTransferFunction
   eztaox.kernels.transfer_function.ExponentialTransferFunction
   eztaox.kernels.transfer_function.CausalGaussianTransferFunction
   eztaox.kernels.transfer_function.CausalExponentialTransferFunction
   eztaox.kernels.transfer_function.ConvolvedKernel


Module Contents
---------------

.. py:class:: TransferFunction

   Bases: :py:obj:`equinox.Module`


   Base class for transfer functions :math:`\Psi(\Delta t)`.


   .. py:method:: evaluate(X1: tinygp.helpers.JAXArray, X2: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray
      :abstractmethod:


      Evaluate the transfer function at two points.



.. py:class:: GaussianTransferFunction

   Bases: :py:obj:`TransferFunction`


   Gaussian transfer function: :math:`\propto e^{-((\Delta t-\Delta t_0)/w)^2}`.

   where :math:`\Delta t_0=\mathrm{shift}`.
   The unity-normalization coefficient is:
   :math:`\frac{1}{\sqrt{\pi}w}`.


   .. py:method:: evaluate(X1: tinygp.helpers.JAXArray, X2: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

      Evaluate the normalized transfer function at two points.

      Normalized so that
      :math:`\int_{-\infty}^{\infty}\Psi(\Delta t)\,d\Delta
      t=1`.



.. py:class:: ExponentialTransferFunction

   Bases: :py:obj:`TransferFunction`


   Exponential transfer function: :math:`\propto e^{-|\Delta t-\Delta t_0|/w}`.

   where :math:`\Delta t_0=\mathrm{shift}`.
   The unity-normalization coefficient is:
   :math:`\frac{1}{2w}`.


   .. py:method:: evaluate(X1: tinygp.helpers.JAXArray, X2: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

      Evaluate the normalized transfer function at two points.

      Normalized so that
      :math:`\int_{-\infty}^{\infty}\Psi(\Delta t)\,d\Delta
      t=1`.



.. py:class:: CausalGaussianTransferFunction

   Bases: :py:obj:`TransferFunction`


   Causal Gaussian: :math:`\propto e^{-((\Delta t-\Delta t_0)/w)^2},\Delta t\ge0`.

   where :math:`\Delta t_0=\mathrm{shift}`.
   The unity-normalization coefficient is:
   :math:`\left[\frac{\sqrt{\pi}}{2}w\left(1+\mathrm{erf}(\mathrm{shift}/w)\right)\right]^{-1}`.


   .. py:method:: evaluate(X1: tinygp.helpers.JAXArray, X2: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

      Evaluate the normalized transfer function at two points.

      Normalized so that
      :math:`\int_{-\infty}^{\infty}\Psi(\Delta t)\,d\Delta
      t=1` for any shift.



.. py:class:: CausalExponentialTransferFunction

   Bases: :py:obj:`TransferFunction`


   Causal exponential: :math:`\propto e^{-(\Delta t-\Delta t_0)/w},\Delta t\ge\Delta t_0`.

   where :math:`\Delta t_0=\mathrm{shift}`.
   Defined for :math:`\Delta t\ge\Delta t_0`, zero otherwise.
   The unity-normalization coefficient is:
   :math:`\frac{1}{w}`.


   .. py:method:: evaluate(X1: tinygp.helpers.JAXArray, X2: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

      Evaluate the normalized transfer function at two points.

      Normalized so that
      :math:`\int_{-\infty}^{\infty}\Psi(\Delta t)\,d\Delta
      t=1` for any shift.



.. py:class:: ConvolvedKernel

   Bases: :py:obj:`tinygp.kernels.Kernel`


   Kernel convolved with a transfer function via FFT.

   Computes the convolved kernel using the Wiener-Khinchin relation:
       :math:`S_{\mathrm{conv}}(f)=S_{\mathrm{base}}(f)\,|\hat{\Psi}(f)|^2`
       :math:`k_{\mathrm{conv}}(\tau)=\mathrm{IFFT}[S_{\mathrm{conv}}](\tau)`

   where :math:`\hat{\Psi}` is the Fourier transform of the transfer function
   and :math:`S_{\mathrm{base}}` is the power spectral density of the base
   kernel.


   .. py:method:: coord_to_sortable(X) -> tinygp.helpers.JAXArray

      Extract the time-sortable component of the coordinates.



   .. py:method:: evaluate(X1, X2) -> tinygp.helpers.JAXArray

      Evaluate the transfer function at two points.



