Source code for

from __future__ import division

import numpy as np

from .domain import TOL
from .box import BoxDomain

[docs]class PointDomain(BoxDomain): r""" A domain consisting of a single point Given a point :math:`\mathbf{x} \in \mathbb{R}^m`, construct the domain consisting of that point .. math:: \mathcal{D} = \lbrace \mathbf x \rbrace \subset \mathbb{R}^m. Parameters ---------- x: array-like (m,) Single point to be contained in the domain """ def __init__(self, x, names = None): self._point = True self._empty = False self._unbounded = False self._x = np.array(x).flatten() assert len(self._x.shape) == 1, "Must provide a one-dimensional point" BoxDomain.__init__(self, lb = self._x, ub = self._x, names = names) def __len__(self): return self._x.shape[0] def _closest_point(self, x0, **kwargs): return np.copy(self._x) def _corner(self, p, **kwargs): return np.copy(self._x) def _extent(self, x, p, **kwargs): return 0 def _isinside(self, X, tol = TOL): Pcopy = np.tile(self._x.reshape(1,-1), (X.shape[0],1)) return np.all(X == Pcopy, axis = 1) def _sample(self, draw = 1): return np.tile(self._x.reshape(1,-1), (draw, 1))
# @property # def lb(self): # return np.copy(self._x) # # @property # def ub(self): # return np.copy(self._x)