Skip to content

Commit 3f328cf

Browse files
committed
An exception is raised when calling pyplot.plot(sig.times, sig) if the signal has array annotations. This fixes that.
The traceback was: ``` File "/Users/andrew/dev/simulation/PyNN/pyNN/utility/plotting.py", line 89, in plot_signals ax.plot(signal.times.rescale(ms), signal, label=label, **options) File "/Users/andrew/.conda/envs/simulation/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 1743, in plot lines = [*self._get_lines(*args, data=data, **kwargs)] File "/Users/andrew/.conda/envs/simulation/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 273, in __call__ yield from self._plot_args(this, kwargs) File "/Users/andrew/.conda/envs/simulation/lib/python3.9/site-packages/matplotlib/axes/_base.py", line 389, in _plot_args y = _check_1d(tup[-1]) File "/Users/andrew/.conda/envs/simulation/lib/python3.9/site-packages/matplotlib/cbook/__init__.py", line 1318, in _check_1d ndim = x[:, None].ndim File "/Users/andrew/dev/analysis/neo/neo/core/analogsignal.py", line 270, in __getitem__ obj.array_annotate(**deepcopy(self.array_annotations_at_index(k))) File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 188, in array_annotate self.array_annotations.update(array_annotations) File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 400, in update self[key] = other[key] File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 389, in __setitem__ value = self.check_function({key: value}, self.length)[key] File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 39, in _normalize_array_annotations value[key] = _normalize_array_annotations(value[key], length) File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 98, in _normalize_array_annotations _check_single_elem(value[0]) File "/Users/andrew/dev/analysis/neo/neo/core/dataobject.py", line 81, in _check_single_elem raise ValueError("Array annotations should only be 1-dimensional") ValueError: Array annotations should only be 1-dimensional ```
1 parent 61b6545 commit 3f328cf

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

neo/core/analogsignal.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,8 @@ def __getitem__(self, i):
265265
raise TypeError("%s not supported" % type(j))
266266
if isinstance(k, (int, np.integer)):
267267
obj = obj.reshape(-1, 1)
268-
obj.array_annotate(**deepcopy(self.array_annotations_at_index(k)))
268+
if k is not None: # matplotlib _check_1d() calls__getitem__ with (:, None)
269+
obj.array_annotate(**deepcopy(self.array_annotations_at_index(k)))
269270
elif isinstance(i, slice):
270271
obj = super().__getitem__(i)
271272
if i.start:

neo/test/coretest/test_analogsignal.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,10 @@ def test__getitem_should_return_single_quantity(self):
639639
self.assertTrue(hasattr(self.signal1[9, 3], 'units'))
640640
self.assertRaises(IndexError, self.signal1.__getitem__, (99, 73))
641641

642+
def test__getitem__with_tuple_slice_none(self):
643+
item = self.signal1[:, None]
644+
# we're just testing no error is raised
645+
642646
def test__time_index(self):
643647
# scalar arguments
644648
self.assertEqual(self.signal2.time_index(2.0 * pq.s), 2)

0 commit comments

Comments
 (0)