From 386542794f555eac0bc2caf8069cf5db93ed2b89 Mon Sep 17 00:00:00 2001 From: "Maxwell I. Zimmerman" Date: Tue, 28 May 2019 13:47:30 -0500 Subject: [PATCH] ragged array setitem bug fix: setitem with null slice operation --- enspara/ra/ra.py | 8 ++++++-- enspara/test/test_ra.py | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/enspara/ra/ra.py b/enspara/ra/ra.py index 51d21a62c..4fcbff193 100644 --- a/enspara/ra/ra.py +++ b/enspara/ra/ra.py @@ -649,8 +649,12 @@ def __setitem__(self, iis, value): value = value._array # ints, slices, lists, and numpy objects are handled by numpy if isinstance(iis, (numbers.Integral, slice, list, np.ndarray)): - self._array[iis] = value - self.__init__(self._array) + if iis == slice(None, None, None): + self._data[iis] = value + self.__init__(self._data, lengths=self.lengths) + else: + self._array[iis] = value + self.__init__(self._array) # tuples get index conversion from 2d to 1d elif isinstance(iis, tuple): first_dimension, second_dimension = iis diff --git a/enspara/test/test_ra.py b/enspara/test/test_ra.py index 159dae835..cc787c711 100644 --- a/enspara/test/test_ra.py +++ b/enspara/test/test_ra.py @@ -400,6 +400,12 @@ def test_ra_operator_not_implemented(self): with assert_raises(TypeError): a > 'asdfasdfasd' + def test_ra_null_slice(self): + a = ra.RaggedArray(np.arange(15), lengths=[2,3,15]) + a[:] = 22 + assert np.all(a._data == np.ones(15, dtype=int)*22) + + class TestParallelLoad(unittest.TestCase): @@ -663,7 +669,7 @@ def test_concat_atoms(self): trjlist = [md.load(self.top_fname)] * 10 trj = concatenate_trjs(trjlist, atoms=ATOMS) - assert_equals(len(trjlist), len(trj)) + assertEqual(len(trjlist), len(trj)) for trjframe, trjlist_item in zip(trj, trjlist): sliced_item = trjlist_item.atom_slice(