Skip to content

Commit

Permalink
Clean up quad api (#739)
Browse files Browse the repository at this point in the history
  • Loading branch information
mmahsereci committed Nov 18, 2022
1 parent 35f50e4 commit 7a71330
Show file tree
Hide file tree
Showing 42 changed files with 237 additions and 113 deletions.
20 changes: 20 additions & 0 deletions docs/source/api/quad.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,23 @@ probnum.quad
.. automodapi:: probnum.quad
:no-heading:
:headings: "="

.. toctree::
:hidden:

quad/integration_measures

.. toctree::
:hidden:

quad/kernel_embeddings

.. toctree::
:hidden:

quad/solvers

.. toctree::
:hidden:

quad/typing
6 changes: 6 additions & 0 deletions docs/source/api/quad/integration_measures.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
probnum.quad.integration_measures
=================================

.. automodapi:: probnum.quad.integration_measures
:no-heading:
:headings: "-"
6 changes: 6 additions & 0 deletions docs/source/api/quad/kernel_embeddings.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
probnum.quad.kernel_embeddings
==============================

.. automodapi:: probnum.quad.kernel_embeddings
:no-heading:
:headings: "-"
5 changes: 5 additions & 0 deletions docs/source/api/quad/solvers.belief_updates.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Belief Updates
--------------
.. automodapi:: probnum.quad.solvers.belief_updates
:no-heading:
:headings: "*"
5 changes: 5 additions & 0 deletions docs/source/api/quad/solvers.policies.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Policies
--------
.. automodapi:: probnum.quad.solvers.policies
:no-heading:
:headings: "*"
21 changes: 21 additions & 0 deletions docs/source/api/quad/solvers.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
probnum.quad.solvers
====================

.. automodapi:: probnum.quad.solvers
:no-heading:
:headings: "-"

.. toctree::
:hidden:

solvers.belief_updates

.. toctree::
:hidden:

solvers.policies

.. toctree::
:hidden:

solvers.stopping_criteria
5 changes: 5 additions & 0 deletions docs/source/api/quad/solvers.stopping_criteria.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Stopping Criteria
-----------------
.. automodapi:: probnum.quad.solvers.stopping_criteria
:no-heading:
:headings: "*"
7 changes: 7 additions & 0 deletions docs/source/api/quad/typing.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
probnum.quad.typing
====================

.. automodapi:: probnum.quad.typing
:no-heading:
:headings: "-"
:include-all-objects:
5 changes: 4 additions & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,10 @@
autodoc_typehints_description_target = "all"
autodoc_typehints_format = "short"
autodoc_type_aliases = {
type_alias: f"typing.{type_alias}" for type_alias in probnum.typing.__all__
**{type_alias: f"typing.{type_alias}" for type_alias in probnum.typing.__all__},
**{
type_alias: f"typing.{type_alias}" for type_alias in probnum.quad.typing.__all__
},
} # Ensures type aliases are correctly displayed and linked in the documentation

# Settings for napoleon
Expand Down
41 changes: 3 additions & 38 deletions src/probnum/quad/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,50 +6,15 @@
choosing points to evaluate the integrand based on said model.
"""

from probnum.quad.solvers.policies import Policy, RandomPolicy, VanDerCorputPolicy
from probnum.quad.solvers.stopping_criteria import (
BQStoppingCriterion,
ImmediateStop,
IntegralVarianceTolerance,
MaxNevals,
RelativeMeanChange,
)

from . import integration_measures, kernel_embeddings, solvers
from ._bayesquad import bayesquad, bayesquad_from_data
from ._integration_measures import GaussianMeasure, IntegrationMeasure, LebesgueMeasure
from .kernel_embeddings import KernelEmbedding
from .solvers import (
BayesianQuadrature,
BQBeliefUpdate,
BQIterInfo,
BQStandardBeliefUpdate,
BQState,
)

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"bayesquad",
"bayesquad_from_data",
"BayesianQuadrature",
"ImmediateStop",
"IntegrationMeasure",
"ImmediateStop",
"KernelEmbedding",
"GaussianMeasure",
"LebesgueMeasure",
"BQStoppingCriterion",
"IntegralVarianceTolerance",
"MaxNevals",
"RandomPolicy",
"VanDerCorputPolicy",
"RelativeMeanChange",
]

# Set correct module paths. Corrects links and module paths in documentation.
BayesianQuadrature.__module__ = "probnum.quad"
BQStoppingCriterion.__module__ = "probnum.quad"
ImmediateStop.__module__ = "probnum.quad"
IntegrationMeasure.__module__ = "probnum.quad"
KernelEmbedding.__module__ = "probnum.quad"
GaussianMeasure.__module__ = "probnum.quad"
LebesgueMeasure.__module__ = "probnum.quad"
bayesquad.__module__ = "probnum.quad"
bayesquad_from_data.__module__ = "probnum.quad"
8 changes: 3 additions & 5 deletions src/probnum/quad/_bayesquad.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,13 @@

import numpy as np

from probnum.quad.solvers.bq_state import BQIterInfo
from probnum.quad.integration_measures import IntegrationMeasure, LebesgueMeasure
from probnum.quad.solvers import BayesianQuadrature, BQIterInfo
from probnum.quad.typing import DomainLike, DomainType
from probnum.randprocs.kernels import Kernel
from probnum.randvars import Normal
from probnum.typing import FloatLike, IntLike

from ._integration_measures import IntegrationMeasure, LebesgueMeasure
from ._quad_typing import DomainLike, DomainType
from .solvers import BayesianQuadrature


def bayesquad(
fun: Callable,
Expand Down
4 changes: 3 additions & 1 deletion src/probnum/quad/_utils.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
"""Helper functions for the quad package"""

from __future__ import annotations

from typing import Optional, Tuple

import numpy as np

from probnum.typing import IntLike

from ._quad_typing import DomainLike, DomainType
from .typing import DomainLike, DomainType


def as_domain(
Expand Down
15 changes: 15 additions & 0 deletions src/probnum/quad/integration_measures/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"""Integration measures for Bayesian quadrature methods."""

from ._integration_measures import GaussianMeasure, IntegrationMeasure, LebesgueMeasure

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"IntegrationMeasure",
"GaussianMeasure",
"LebesgueMeasure",
]

# Set correct module paths. Corrects links and module paths in documentation.
IntegrationMeasure.__module__ = "probnum.quad.integration_measures"
GaussianMeasure.__module__ = "probnum.quad.integration_measures"
LebesgueMeasure.__module__ = "probnum.quad.integration_measures"
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
import numpy as np
import scipy.stats

from probnum.quad._utils import as_domain
from probnum.quad.typing import DomainLike
from probnum.randvars import Normal
from probnum.typing import FloatLike, IntLike

from ._quad_typing import DomainLike
from ._utils import as_domain


class IntegrationMeasure(abc.ABC):
"""An abstract class for a measure against which a target function is integrated.
Expand Down Expand Up @@ -90,7 +89,7 @@ class LebesgueMeasure(IntegrationMeasure):
input_dim
Dimension of the integration domain. If not given, inferred from ``domain``.
normalized
Boolean which controls whether or not the measure is normalized (i.e.,
Boolean which controls whether the measure is normalized (i.e.,
integral over the domain is one). Defaults to ``False``.
"""

Expand Down
10 changes: 10 additions & 0 deletions src/probnum/quad/kernel_embeddings/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
"""Kernel embeddings for Bayesian quadrature methods."""

from ._kernel_embedding import KernelEmbedding

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"KernelEmbedding",
]

# Set correct module paths. Corrects links and module paths in documentation.
KernelEmbedding.__module__ = "probnum.quad.kernel_embeddings"
2 changes: 1 addition & 1 deletion src/probnum/quad/kernel_embeddings/_expquad_gauss.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import numpy as np
import scipy.linalg as slinalg

from probnum.quad._integration_measures import GaussianMeasure
from probnum.quad.integration_measures import GaussianMeasure
from probnum.randprocs.kernels import ExpQuad


Expand Down
2 changes: 1 addition & 1 deletion src/probnum/quad/kernel_embeddings/_expquad_lebesgue.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import numpy as np
from scipy.special import erf

from probnum.quad._integration_measures import LebesgueMeasure
from probnum.quad.integration_measures import LebesgueMeasure
from probnum.randprocs.kernels import ExpQuad


Expand Down
2 changes: 1 addition & 1 deletion src/probnum/quad/kernel_embeddings/_kernel_embedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import numpy as np

from probnum.quad._integration_measures import (
from probnum.quad.integration_measures import (
GaussianMeasure,
IntegrationMeasure,
LebesgueMeasure,
Expand Down
2 changes: 1 addition & 1 deletion src/probnum/quad/kernel_embeddings/_matern_lebesgue.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import numpy as np

from probnum.quad._integration_measures import LebesgueMeasure
from probnum.quad.integration_measures import LebesgueMeasure
from probnum.randprocs.kernels import Matern, ProductMatern


Expand Down
20 changes: 17 additions & 3 deletions src/probnum/quad/solvers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
from .bayesian_quadrature import BayesianQuadrature
from .belief_updates import BQBeliefUpdate, BQStandardBeliefUpdate
from .bq_state import BQIterInfo, BQState
"""Bayesian quadrature methods and their components."""

from . import belief_updates, policies, stopping_criteria
from ._bayesian_quadrature import BayesianQuadrature
from ._bq_state import BQIterInfo, BQState

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"BayesianQuadrature",
"BQState",
"BQIterInfo",
]

# Set correct module paths. Corrects links and module paths in documentation.
BayesianQuadrature.__module__ = "probnum.quad.solvers"
BQState.__module__ = "probnum.quad.solvers"
BQIterInfo.__module__ = "probnum.quad.solvers"
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
"""Probabilistic numerical methods for solving integrals."""

from __future__ import annotations

from typing import Callable, Optional, Tuple
import warnings

import numpy as np

from probnum.quad.integration_measures import IntegrationMeasure, LebesgueMeasure
from probnum.quad.kernel_embeddings import KernelEmbedding
from probnum.quad.solvers._bq_state import BQIterInfo, BQState
from probnum.quad.solvers.belief_updates import BQBeliefUpdate, BQStandardBeliefUpdate
from probnum.quad.solvers.policies import Policy, RandomPolicy, VanDerCorputPolicy
from probnum.quad.solvers.stopping_criteria import (
BQStoppingCriterion,
Expand All @@ -13,16 +19,11 @@
MaxNevals,
RelativeMeanChange,
)
from probnum.quad.typing import DomainLike
from probnum.randprocs.kernels import ExpQuad, Kernel
from probnum.randvars import Normal
from probnum.typing import FloatLike, IntLike

from .._integration_measures import IntegrationMeasure, LebesgueMeasure
from .._quad_typing import DomainLike
from ..kernel_embeddings import KernelEmbedding
from .belief_updates import BQBeliefUpdate, BQStandardBeliefUpdate
from .bq_state import BQIterInfo, BQState

# pylint: disable=too-many-branches, too-complex


Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"""State of a Bayesian quadrature method."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Optional, Tuple

import numpy as np

from probnum.quad._integration_measures import IntegrationMeasure
from probnum.quad.integration_measures import IntegrationMeasure
from probnum.quad.kernel_embeddings import KernelEmbedding
from probnum.randprocs.kernels import Kernel
from probnum.randvars import Normal
Expand Down
12 changes: 12 additions & 0 deletions src/probnum/quad/solvers/belief_updates/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
"""Belief updates for Bayesian quadrature."""

from ._belief_update import BQBeliefUpdate, BQStandardBeliefUpdate

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"BQBeliefUpdate",
"BQStandardBeliefUpdate",
]

# Set correct module paths. Corrects links and module paths in documentation.
BQBeliefUpdate.__module__ = "probnum.quad.solvers.belief_updates"
BQStandardBeliefUpdate.__module__ = "probnum.quad.solvers.belief_updates"
4 changes: 3 additions & 1 deletion src/probnum/quad/solvers/belief_updates/_belief_update.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""Belief updates for Bayesian quadrature."""

from __future__ import annotations

import abc
from typing import Optional, Tuple

import numpy as np
from scipy.linalg import cho_factor, cho_solve

from probnum.quad.kernel_embeddings import KernelEmbedding
from probnum.quad.solvers.bq_state import BQState
from probnum.quad.solvers._bq_state import BQState
from probnum.randprocs.kernels import Kernel
from probnum.randvars import Normal
from probnum.typing import FloatLike
Expand Down
12 changes: 12 additions & 0 deletions src/probnum/quad/solvers/policies/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,15 @@
from ._policy import Policy
from ._random_policy import RandomPolicy
from ._van_der_corput_policy import VanDerCorputPolicy

# Public classes and functions. Order is reflected in documentation.
__all__ = [
"Policy",
"RandomPolicy",
"VanDerCorputPolicy",
]

# Set correct module paths. Corrects links and module paths in documentation.
Policy.__module__ = "probnum.quad.solvers.policies"
RandomPolicy.__module__ = "probnum.quad.solvers.policies"
VanDerCorputPolicy.__module__ = "probnum.quad.solvers.policies"

0 comments on commit 7a71330

Please sign in to comment.