Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up quad api #739

Merged
merged 6 commits into from
Nov 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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"
Loading