Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

_assign_subclass: signal_shape (1,) now becomes BaseSignal #2773

Merged
merged 11 commits into from
Sep 5, 2021
6 changes: 5 additions & 1 deletion hyperspy/signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -5367,9 +5367,13 @@ def as_signal2D(self, image_axes, out=None, optimize=True):

def _assign_subclass(self):
mp = self.metadata
if self.axes_manager.signal_shape == (1,):
signal_dimension = 0
else:
signal_dimension = self.axes_manager.signal_dimension
self.__class__ = hyperspy.io.assign_signal_subclass(
dtype=self.data.dtype,
signal_dimension=self.axes_manager.signal_dimension,
signal_dimension=signal_dimension,
signal_type=mp.Signal.signal_type
if "Signal.signal_type" in mp
else self._signal_type,
Expand Down
2 changes: 1 addition & 1 deletion hyperspy/tests/model/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -763,7 +763,7 @@ def test_out_argument(self):
@lazifyTestClass
class TestCreateModel:
def setup_method(self, method):
self.s = hs.signals.Signal1D(np.asarray([0]))
self.s = hs.signals.Signal1D(np.asarray([0, 1]))
self.im = hs.signals.Signal2D(np.ones([1, 1]))

def test_create_model(self):
Expand Down
19 changes: 17 additions & 2 deletions hyperspy/tests/signals/test_assign_subclass.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,21 @@ def test_id_set_signal_type():
assert id_om == id(s.original_metadata)


class TestToBaseSignal:

def setup_method(self, method):
self.s = hs.signals.Signal1D(np.array([0]))

def test_simple(self):
self.s._assign_subclass()
assert isinstance(self.s, hs.signals.BaseSignal)

def test_lazy(self):
self.s._lazy = True
self.s._assign_subclass()
assert isinstance(self.s, _lazy_signals.LazySignal)


class TestConvertBaseSignal:

def setup_method(self, method):
Expand Down Expand Up @@ -122,7 +137,7 @@ def test_base_to_complex(self):
class TestConvertSignal1D:

def setup_method(self, method):
self.s = hs.signals.Signal1D([0])
self.s = hs.signals.Signal1D([0, 1])

def test_lazy_to_eels_and_back(self):
self.s = self.s.as_lazy()
Expand Down Expand Up @@ -176,7 +191,7 @@ def test_complex_to_complex2d(self):
class TestConvertComplexSignal1D:

def setup_method(self, method):
self.s = hs.signals.ComplexSignal1D([0])
self.s = hs.signals.ComplexSignal1D([0, 1])

def test_complex_to_dielectric_function(self):
self.s.set_signal_type("DielectricFunction")
Expand Down
1 change: 1 addition & 0 deletions upcoming_changes/2773.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Signals with 1 value in the signal dimension will now be :py:class:`~.signal.BaseSignal`