diff --git a/cosmic_dustbox/crefin.py b/cosmic_dustbox/crefin.py index b42d9cfe7afdbed39387d1e26fb7e9f181e27170..99b1157d41c078820aee52146f5a515990c14e05 100644 --- a/cosmic_dustbox/crefin.py +++ b/cosmic_dustbox/crefin.py @@ -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) diff --git a/cosmic_dustbox/tests/test_crefin.py b/cosmic_dustbox/tests/test_crefin.py index 26e155c26409358ba91c26326bb892f05868f132..246c34d08b6727cc0195bef47e40d01c0bfa043d 100644 --- a/cosmic_dustbox/tests/test_crefin.py +++ b/cosmic_dustbox/tests/test_crefin.py @@ -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,