flip.likelihood
===============

.. py:module:: flip.likelihood


Attributes
----------

.. autoapisummary::

   flip.likelihood.jax_installed
   flip.likelihood.log
   flip.likelihood._available_priors
   flip.likelihood._available_inversion_methods
   flip.likelihood.log_likelihood_gaussian_inverse_jit


Classes
-------

.. autoapisummary::

   flip.likelihood.BaseLikelihood
   flip.likelihood.MultivariateGaussianLikelihood
   flip.likelihood.MultivariateGaussianLikelihoodInterpolate1D
   flip.likelihood.MultivariateGaussianLikelihoodInterpolate2D
   flip.likelihood.Prior
   flip.likelihood.GaussianPrior
   flip.likelihood.PositivePrior
   flip.likelihood.UniformPrior


Functions
---------

.. autoapisummary::

   flip.likelihood.log_likelihood_gaussian_inverse
   flip.likelihood.log_likelihood_gaussian_solve
   flip.likelihood.log_likelihood_gaussian_cholesky
   flip.likelihood.log_likelihood_gaussian_cholesky_inverse
   flip.likelihood.log_likelihood_gaussian_cholesky_regularized
   flip.likelihood.no_prior
   flip.likelihood.prior_sum


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

.. py:data:: jax_installed
   :value: True


.. py:data:: log

.. py:data:: _available_priors
   :value: ['gaussian', 'positive', 'uniform']


.. py:data:: _available_inversion_methods
   :value: ['inverse', 'solve', 'cholesky', 'cholesky_regularized', 'cholesky_inverse']


.. py:function:: log_likelihood_gaussian_inverse(vector, covariance_sum)

.. py:function:: log_likelihood_gaussian_solve(vector, covariance_sum)

.. py:function:: log_likelihood_gaussian_cholesky(vector, covariance_sum)

.. py:function:: log_likelihood_gaussian_cholesky_inverse(vector, covariance_sum)

.. py:function:: log_likelihood_gaussian_cholesky_regularized(vector, covariance_sum)

.. py:data:: log_likelihood_gaussian_inverse_jit

.. py:function:: no_prior(x)

.. py:function:: prior_sum(priors, x)

.. py:class:: BaseLikelihood(covariance=None, data=None, parameter_names=None, likelihood_properties={})

   Bases: :py:obj:`abc.ABC`


   Helper class that provides a standard way to create an ABC using
   inheritance.


   .. py:attribute:: _default_likelihood_properties


   .. py:attribute:: covariance
      :value: None



   .. py:attribute:: data
      :value: None



   .. py:attribute:: parameter_names
      :value: None



   .. py:attribute:: free_par


   .. py:attribute:: likelihood_properties


   .. py:attribute:: prior


   .. py:method:: __call__(parameter_values)


   .. py:method:: _init_likelihood(*args)
      :abstractmethod:



   .. py:method:: init_from_covariance(covariance, data, parameter_names, likelihood_properties={}, **kwargs)
      :classmethod:


      The init_from_covariance function is a class method that initializes the likelihood object from a covariance matrix.

      :param cls: Create a new instance of the class
      :param covariance: Compute the full matrix of the covariance
      :param parameter_names: Set the names of the parameters
      :param density: Compute the vector and its error
      :param density_err: Compute the vector_err
      :param velocity: Compute the vector and vector_err
      :param velocity_err: Compute the error in the vector
      :param : Compute the vector

      :returns: A likelihood object



   .. py:method:: initialize_prior()


   .. py:method:: verify_covariance()


.. py:class:: MultivariateGaussianLikelihood(covariance=None, data=None, parameter_names=None, likelihood_properties={})

   Bases: :py:obj:`BaseLikelihood`


   Helper class that provides a standard way to create an ABC using
   inheritance.


   .. py:method:: _init_likelihood()


.. py:class:: MultivariateGaussianLikelihoodInterpolate1D(covariance=None, data=None, parameter_names=None, likelihood_properties={}, interpolation_value_name=None, interpolation_value_range=None)

   Bases: :py:obj:`BaseLikelihood`


   Helper class that provides a standard way to create an ABC using
   inheritance.


   .. py:attribute:: interpolation_value_name
      :value: None



   .. py:attribute:: interpolation_value_range
      :value: None



   .. py:attribute:: free_par


   .. py:method:: _init_likelihood()


.. py:class:: MultivariateGaussianLikelihoodInterpolate2D(covariance=None, data=None, parameter_names=None, prior=None, likelihood_properties={}, interpolation_value_name_0=None, interpolation_value_name_1=None, interpolation_value_range_0=None, interpolation_value_range_1=None)

   Bases: :py:obj:`BaseLikelihood`


   Helper class that provides a standard way to create an ABC using
   inheritance.


   .. py:attribute:: interpolation_value_name_0
      :value: None



   .. py:attribute:: interpolation_value_name_1
      :value: None



   .. py:attribute:: interpolation_value_range_0
      :value: None



   .. py:attribute:: interpolation_value_range_1
      :value: None



   .. py:method:: __call__(parameter_values)

      The __call__ function is the function that will be called when the likelihood
      object is called. It takes in a list of parameter values, and returns a float
      value representing the log-likelihood value for those parameters. The __call__
      method should not be overwritten by subclasses unless you know what you are doing!

      :param self: Refer to the object itself
      :param parameter_values: Compute the covariance matrix
      :param interpolation_value_0: Interpolate the covariance matrix along the first dimension
      :param interpolation_value_1: Interpolate the covariance matrix
      :param : Compute the covariance sum

      :returns: The log-likelihood function



.. py:class:: Prior(parameter_name=None)

   .. py:attribute:: parameter_name
      :value: None



.. py:class:: GaussianPrior(parameter_name=None, prior_mean=None, prior_standard_deviation=None)

   Bases: :py:obj:`Prior`


   .. py:attribute:: prior_mean
      :value: None



   .. py:attribute:: prior_standard_deviation
      :value: None



   .. py:method:: __call__(parameter_values_dict)


.. py:class:: PositivePrior(parameter_name=None)

   Bases: :py:obj:`Prior`


   .. py:method:: __call__(parameter_values_dict)


.. py:class:: UniformPrior(parameter_name=None, range=None)

   Bases: :py:obj:`Prior`


   .. py:attribute:: range
      :value: None



   .. py:method:: __call__(parameter_values_dict)


