integrated
==========

.. py:module:: smolgp.kernels.integrated

.. autoapi-nested-parse::

   These kernels are compatible with :class:`smolgp.solvers.integrated.IntegratedStateSpaceSolver`,
   which uses Bayesian filtering and smoothing algorithms to perform scalable GP
   inference. (see :mod:`smolgp.solvers` for more technical details).
   On GPU, a performance boost may be observed for large datasets by using the
   :class:`smolgp.solvers.parallel.ParallelStateSpaceSolver` class.

   Like the quasisep kernels, these methods are experimental, so you may find
   the documentation patchy in places. You are encouraged to `open issues or
   pull requests <https://github.com/smolgp-dev/smolgp/issues>`_ as you find gaps.



Classes
-------

.. autoapisummary::

   smolgp.kernels.integrated.IntegratedSHO
   smolgp.kernels.integrated.IntegratedExp
   smolgp.kernels.integrated.IntegratedMatern32
   smolgp.kernels.integrated.IntegratedMatern52
   smolgp.kernels.integrated.IntegratedCosine


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

.. py:class:: IntegratedSHO(omega: tinygp.helpers.JAXArray | float, quality: tinygp.helpers.JAXArray | float, sigma: tinygp.helpers.JAXArray | float = jnp.ones(()), num_insts: int = 1, name: str = 'IntegratedSHO', **kwargs)

   Bases: :py:obj:`IntegratedStateSpaceModel`


   The :class:`~smolgp.kernels.SHO` kernel integrated over a finite time range :math:`\delta`.

   Models the time-averaged version of the damped, driven stochastic harmonic
   oscillator kernel (see :class:`~smolgp.kernels.SHO`).  Each measurement
   is the average of the latent GP over an exposure window of length
   :math:`\delta` centred on the observation time.

   :param omega: The natural frequency :math:`\omega_0`.
   :param quality: The quality factor :math:`Q`.
   :param sigma: The amplitude :math:`\sigma`. Defaults to 1.
                 Specifying it here provides a slight performance boost over
                 multiplying the kernel by a scalar after construction.
   :type sigma: optional
   :param num_insts: Number of distinct instrument datasets. Defaults to 1.
   :type num_insts: optional


   .. py:attribute:: omega
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: quality
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: sigma
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: eta
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: num_insts
      :value: 1



   .. py:attribute:: name
      :value: 'IntegratedSHO'



   .. py:attribute:: base_model


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

      The integrated transition matrix Phibar for the SHO process



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

      The integrated process noise submatrices for the SHO process



.. py:class:: IntegratedExp(scale: tinygp.helpers.JAXArray | float, sigma: tinygp.helpers.JAXArray | float = jnp.ones(()), num_insts: int = 1, name: str = 'IntegratedExp', **kwargs)

   Bases: :py:obj:`IntegratedStateSpaceModel`


   The :class:`~smolgp.kernels.Exp` (Ornstein–Uhlenbeck / Matérn-1/2) kernel
   integrated over a finite time range :math:`\delta`.

   :param scale: The length scale :math:`\ell`.
   :param sigma: The amplitude :math:`\sigma`. Defaults to 1.
   :type sigma: optional
   :param num_insts: Number of distinct instrument datasets. Defaults to 1.
   :type num_insts: optional


   .. py:attribute:: scale
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: sigma
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: lam
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: name
      :value: 'IntegratedExp'



   .. py:attribute:: num_insts
      :value: 1



   .. py:attribute:: base_model


.. py:class:: IntegratedMatern32(scale: tinygp.helpers.JAXArray | float, sigma: tinygp.helpers.JAXArray | float = jnp.ones(()), num_insts: int = 1, name: str = 'IntegratedMatern32', **kwargs)

   Bases: :py:obj:`IntegratedStateSpaceModel`


   The :class:`~smolgp.kernels.Matern32` kernel integrated over a finite time range :math:`\delta`.

   :param scale: The length scale :math:`\ell`.
   :param sigma: The amplitude :math:`\sigma`. Defaults to 1.
   :type sigma: optional
   :param num_insts: Number of distinct instrument datasets. Defaults to 1.
   :type num_insts: optional


   .. py:attribute:: scale
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: sigma
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: lam
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: name
      :value: 'IntegratedMatern32'



   .. py:attribute:: num_insts
      :value: 1



   .. py:attribute:: base_model


.. py:class:: IntegratedMatern52(scale: tinygp.helpers.JAXArray | float, sigma: tinygp.helpers.JAXArray | float = jnp.ones(()), num_insts: int = 1, name: str = 'IntegratedMatern52', **kwargs)

   Bases: :py:obj:`IntegratedStateSpaceModel`


   The :class:`~smolgp.kernels.Matern52` kernel integrated over a finite time range :math:`\delta`.

   :param scale: The length scale :math:`\ell`.
   :param sigma: The amplitude :math:`\sigma`. Defaults to 1.
   :type sigma: optional
   :param num_insts: Number of distinct instrument datasets. Defaults to 1.
   :type num_insts: optional


   .. py:attribute:: scale
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: sigma
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: lam
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: name
      :value: 'IntegratedMatern52'



   .. py:attribute:: num_insts
      :value: 1



   .. py:attribute:: base_model


.. py:class:: IntegratedCosine(scale: tinygp.helpers.JAXArray | float, sigma: tinygp.helpers.JAXArray | float = jnp.ones(()), num_insts: int = 1, name: str = 'IntegratedCosine', **kwargs)

   Bases: :py:obj:`IntegratedStateSpaceModel`


   The :class:`~smolgp.kernels.Cosine` kernel integrated over a finite time range :math:`\delta`.

   :param scale: The period :math:`\ell`.
   :param sigma: The amplitude :math:`\sigma`. Defaults to 1.
   :type sigma: optional
   :param num_insts: Number of distinct instrument datasets. Defaults to 1.
   :type num_insts: optional


   .. py:attribute:: scale
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: sigma
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: omega
      :type:  tinygp.helpers.JAXArray | float


   .. py:attribute:: name
      :value: 'IntegratedCosine'



   .. py:attribute:: num_insts
      :value: 1



   .. py:attribute:: base_model


