Commit 3459b151 authored by Martin Glatzle's avatar Martin Glatzle

Make interpolation work with len 1 arrays.

parent 745f1f71
......@@ -122,20 +122,22 @@ class Crefin(object):
if bounds_error and not a_bounds_error:
def f(aa, lam):
r = _np.clip(aa, _np.amin(a), _np.amax(a))
rowind_unsorted = _np.argsort(r)
colind_unsorted = _np.argsort(lam)
return (
rinterpolation(lam, r)
+ 1j*iinterpolation(lam, r))[
rowind_unsorted][:, colind_unsorted]
n = rinterpolation(lam, r) + 1j*iinterpolation(lam, r)
if _np.prod(r.shape)*_np.prod(lam.shape) > 1:
rowind_unsorted = _np.argsort(r)
colind_unsorted = _np.argsort(lam)
return n[rowind_unsorted][:, colind_unsorted]
else:
return _np.atleast_2d(n)
else:
def f(a, lam):
rowind_unsorted = _np.argsort(lam)
colind_unsorted = _np.argsort(r)
return (
rinterpolation(lam, a)
+ 1j*iinterpolation(lam, a))[
rowind_unsorted][:, colind_unsorted]
n = rinterpolation(lam, a) + 1j*iinterpolation(lam, a)
if _np.prod(r.shape)*_np.prod(lam.shape) > 1:
rowind_unsorted = _np.argsort(lam)
colind_unsorted = _np.argsort(r)
return n[rowind_unsorted][:, colind_unsorted]
else:
return _np.atleast_2d(n)
return cls(f)
......
......@@ -52,6 +52,21 @@ class TestFromData(TestCase):
a = crefin.Crefin.fromData(c.a2, c.lam2, c.n2)
return
def test_single_element(self):
c = self.__class__
a = crefin.Crefin.fromData(c.a2, c.lam2, c.n2)
n = a(
np.array([1e-9])*u.micron,
np.array([8])*u.micron
)
self.assertTrue
return
def test_single_element_no_bounds(self):
c = self.__class__
a = crefin.Crefin.fromData(c.a2, c.lam2, c.n2)
return
def test_normal_no_bounds(self):
c = self.__class__
a = crefin.Crefin.fromData(c.a2, c.lam2, c.n2,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment