def to_signal(self, mask=None): """ Creates a hyperspy.Signal1D object with the same spectral image. The resulting hyperspy.Signal1D contains the full spectral image. Returns ---------- s : hyperspy.Signal1D hyperspy object """ (nz, ny, nx, nf) = np.shape(self.spec_im) dx = (self.x_array[1] - self.x_array[0]) dy = (self.y_array[1] - self.y_array[0]) (units, scale) = self.get_unit_scaling() dx *= scale dy *= scale spec_name = 'index' if self.spec_units in ['nm', 'um']: spec_name = 'Wavelength' elif self.spec_units == 'eV': spec_name = 'E' dict_y = {'name': 'y', 'units': units, 'scale': dy, 'size': ny} dict_x = {'name': 'x', 'units': units, 'scale': dx, 'size': nx} dict_f = { 'name': spec_name, 'units': self.spec_units, 'scale': self.spec_x_array[1] - self.spec_x_array[0], 'size': nf, 'offset': self.spec_x_array[0] } dict_z = {'name': 'z', 'units': units, 'size': nz} if nz == 1: s = Signal1D(np.squeeze(self.spec_im), axes=[dict_y, dict_x, dict_f], mask=mask) s.change_dtype('float64') return s else: dz = (self.z_array[1] - self.z_array[0]) * scale dict_z['scale'] = dz s = BaseSignal(self.spec_im, axes=[dict_z, dict_y, dict_x, dict_f]) s.change_dtype('float64') return s.as_signal1D(0)