def test_metadata_write_read_round_trip(self): s = io.BytesIO() data_in = numpy.ones((6, 4), numpy.float32) dimensional_calibrations_in = [Calibration.Calibration(1, 2, "nm"), Calibration.Calibration(2, 3, u"µm")] intensity_calibration_in = Calibration.Calibration(4, 5, "six") metadata_in = {"abc": 1, "def": "abc", "efg": { "one": 1, "two": "TWO", "three": [3, 4, 5] }} dm3_image_utils.save_image(data_in, dimensional_calibrations_in, intensity_calibration_in, metadata_in, s) s.seek(0) data_out, dimensional_calibrations_out, intensity_calibration_out, title_out, metadata_out = dm3_image_utils.load_image(s) self.assertEqual(metadata_in, metadata_out)
def test_rgb_data_write_read_round_trip(self): s = io.BytesIO() data_in = (numpy.random.randn(6, 4, 3) * 255).astype(numpy.uint8) dimensional_calibrations_in = [Calibration.Calibration(1, 2, "nm"), Calibration.Calibration(2, 3, u"µm")] intensity_calibration_in = Calibration.Calibration(4, 5, "six") metadata_in = {"abc": None, "": "", "one": [], "two": {}, "three": [1, None, 2]} dm3_image_utils.save_image(data_in, dimensional_calibrations_in, intensity_calibration_in, metadata_in, s) s.seek(0) data_out, dimensional_calibrations_out, intensity_calibration_out, title_out, metadata_out = dm3_image_utils.load_image(s) self.assertTrue(numpy.array_equal(data_in, data_out))
def test_metadata_difficult_types_write_read_round_trip(self): s = io.BytesIO() data_in = numpy.ones((6, 4), numpy.float32) dimensional_calibrations_in = [Calibration.Calibration(1, 2, "nm"), Calibration.Calibration(2, 3, u"µm")] intensity_calibration_in = Calibration.Calibration(4, 5, "six") metadata_in = {"abc": None, "": "", "one": [], "two": {}, "three": [1, None, 2]} dm3_image_utils.save_image(data_in, dimensional_calibrations_in, intensity_calibration_in, metadata_in, s) s.seek(0) data_out, dimensional_calibrations_out, intensity_calibration_out, title_out, metadata_out = dm3_image_utils.load_image(s) metadata_expected = {"one": [], "two": {}, "three": [1, 2]} self.assertEqual(metadata_out, metadata_expected)
def test_calibrations_write_read_round_trip(self): s = io.BytesIO() data_in = numpy.ones((6, 4), numpy.float32) dimensional_calibrations_in = [Calibration.Calibration(1.1, 2.1, "nm"), Calibration.Calibration(2, 3, u"µm")] intensity_calibration_in = Calibration.Calibration(4.4, 5.5, "six") metadata_in = dict() dm3_image_utils.save_image(data_in, dimensional_calibrations_in, intensity_calibration_in, metadata_in, s) s.seek(0) data_out, dimensional_calibrations_out, intensity_calibration_out, title_out, metadata_out = dm3_image_utils.load_image(s) dimensional_calibrations_out = [Calibration.Calibration(*d) for d in dimensional_calibrations_out] self.assertEqual(dimensional_calibrations_in, dimensional_calibrations_out) intensity_calibration_out = Calibration.Calibration(*intensity_calibration_out) self.assertEqual(intensity_calibration_in, intensity_calibration_out)
def test_data_write_read_round_trip(self): dtypes = (numpy.float32, numpy.float64, numpy.complex64, numpy.complex128, numpy.int16, numpy.uint16, numpy.int32, numpy.uint32) shapes = ((6, 4), (6, ), (6, 4, 2)) for dtype in dtypes: for shape in shapes: s = io.BytesIO() data_in = numpy.ones(shape, dtype) dimensional_calibrations_in = list() for index, dimension in enumerate(shape): dimensional_calibrations_in.append(Calibration.Calibration(1.0 + 0.1 * index, 2.0 + 0.2 * index, "µ" + "n" * index)) intensity_calibration_in = Calibration.Calibration(4, 5, "six") metadata_in = dict() dm3_image_utils.save_image(data_in, dimensional_calibrations_in, intensity_calibration_in, metadata_in, s) s.seek(0) data_out, dimensional_calibrations_out, intensity_calibration_out, _, _ = dm3_image_utils.load_image(s) self.assertTrue(numpy.array_equal(data_in, data_out)) dimensional_calibrations_out = [Calibration.Calibration(*d) for d in dimensional_calibrations_out] self.assertEqual(dimensional_calibrations_in, dimensional_calibrations_out) self.assertEqual(intensity_calibration_in, Calibration.Calibration(*intensity_calibration_out))