'Evaluate the spline or its derivatives at given positions.
Parameters
theta, phi : array_like
Input coordinates.
If `grid` is False, evaluate the spline at points
``(theta[i], phi[i]), i=0, ..., len(x)-1``.  Standard
Numpy broadcasting is obeyed.
If `grid` is True: evaluate spline at the grid points
defined by the coordinate arrays theta, phi. The arrays
must be sorted to increasing order.
dtheta : int, optional
Order of theta-derivative
.. versionadded:: 0.14.0
dphi : int
Order of phi-derivative
.. versionadded:: 0.14.0
grid : bool
Whether to evaluate the results on a grid spanned by the
input arrays, or at points specified by the input arrays.
.. versionadded:: 0.14.0'

def __call__(self, theta, phi, dtheta=0, dphi=0, grid=True):

    theta = np.asarray(theta)
    phi = np.asarray(phi)
    if ((theta.size > 0) and ((theta.min() < 0.0) or (theta.max() > np.pi))):
        raise ValueError('requested    theta    out    of    bounds.')
    if ((phi.size > 0) and ((phi.min() < 0.0) or (phi.max() > (2.0 * np.pi)))):
        raise ValueError('requested    phi    out    of    bounds.')
    return _BivariateSplineBase.__call__(self, theta, phi, dx=dtheta, dy=dphi, grid=grid)
