def _iter_slice(self, attribute=None): # iterate through the uncollapsed slab one plane at a time view, ax_collapse = self._subslice() att = attribute or self.attribute for z in xrange(*self.zlim): view[self.zax] = z plane = self.data[att, view] yield np.nan_to_num(plane)
def test_max_undo(self): cmds = [self.make_command() for _ in xrange(c.MAX_UNDO + 1)] for cmd in cmds: self.stack.do(cmd) for cmd in cmds[:-1]: self.stack.undo() with pytest.raises(IndexError): self.stack.undo()
def subset_spectrum(subset, attribute, slc, zaxis): """ Extract a spectrum from a subset. This makes a mask of the subset in the **current slice**, and extracts a tube of this shape over all slices along ``zaxis``. In other words, the variation of the subset along ``zaxis`` is ignored, and only the interaction of the subset and the slice is relevant. :param subset: A :class:`~glue.core.subset.Subset` :param attribute: The :class:`~glue.core.data.ComponentID` to extract :param slc: A tuple describing the slice :param zaxis: Which axis to integrate over """ data = subset.data x = Extractor.abcissa(data, zaxis) view = [ slice(s, s + 1) if s not in ['x', 'y'] else slice(None) for s in slc ] mask = np.squeeze(subset.to_mask(view)) if slc.index('x') < slc.index('y'): mask = mask.T w = np.where(mask) view[slc.index('x')] = w[1] view[slc.index('y')] = w[0] result = np.empty(x.size) # treat each channel separately, to reduce memory storage for i in xrange(data.shape[zaxis]): view[zaxis] = i val = data[attribute, view] result[i] = np.nansum(val) / np.isfinite(val).sum() y = result return x, y
def subset_spectrum(subset, attribute, slc, zaxis): """ Extract a spectrum from a subset. This makes a mask of the subset in the **current slice**, and extracts a tube of this shape over all slices along ``zaxis``. In other words, the variation of the subset along ``zaxis`` is ignored, and only the interaction of the subset and the slice is relevant. :param subset: A :class:`~glue.core.subset.Subset` :param attribute: The :class:`~glue.core.data.ComponentID` to extract :param slc: A tuple describing the slice :param zaxis: Which axis to integrate over """ data = subset.data x = Extractor.abcissa(data, zaxis) view = [slice(s, s + 1) if s not in ['x', 'y'] else slice(None) for s in slc] mask = np.squeeze(subset.to_mask(view)) if slc.index('x') < slc.index('y'): mask = mask.T w = np.where(mask) view[slc.index('x')] = w[1] view[slc.index('y')] = w[0] result = np.empty(x.size) # treat each channel separately, to reduce memory storage for i in xrange(data.shape[zaxis]): view[zaxis] = i val = data[attribute, view] result[i] = np.nansum(val) / np.isfinite(val).sum() y = result return x, y