Browse Source

Test the LabelMap

feature/load_slices
Ruben Verweij 7 years ago
parent
commit
19c5db83af
3 changed files with 128 additions and 6 deletions
  1. +47
    -0
      nd2reader/artificial.py
  2. +6
    -6
      nd2reader/label_map.py
  3. +75
    -0
      tests/test_label_map.py

+ 47
- 0
nd2reader/artificial.py View File

@ -2,6 +2,8 @@
Functions to create artificial nd2 data for testing purposes
"""
import six
import numpy as np
import struct
class ArtificialND2(object):
@ -45,3 +47,48 @@ class ArtificialND2(object):
# write version info
version_info = six.b('ND2 FILE SIGNATURE CHUNK NAME01!Ver3.0')
self._fh.write(version_info)
@staticmethod
def create_label_map_bytes():
"""
Construct a binary label map
Returns:
tuple: (binary data, dictionary data)
"""
raw_text = six.b('')
labels = {
'image_attributes': "ImageAttributesLV!",
'image_text_info': "ImageTextInfoLV!",
'image_metadata': "ImageMetadataLV!",
'image_metadata_sequence': "ImageMetadataSeqLV|0!",
'image_calibration': "ImageCalibrationLV|0!",
'x_data': "CustomData|X!",
'y_data': "CustomData|Y!",
'z_data': "CustomData|Z!",
'roi_metadata': "CustomData|RoiMetadata_v1!",
'pfs_status': "CustomData|PFS_STATUS!",
'pfs_offset': "CustomData|PFS_OFFSET!",
'guid': "CustomData|GUIDStore!",
'description': "CustomData|CustomDescriptionV1_0!",
'camera_exposure_time': "CustomData|Camera_ExposureTime1!",
'camera_temp': "CustomData|CameraTemp1!",
'acquisition_times': "CustomData|AcqTimesCache!",
'acquisition_times_2': "CustomData|AcqTimes2Cache!",
'acquisition_frames': "CustomData|AcqFramesCache!",
'lut_data': "CustomDataVar|LUTDataV1_0!",
'grabber_settings': "CustomDataVar|GrabberCameraSettingsV1_0!",
'custom_data': "CustomDataVar|CustomDataV2_0!",
'app_info': "CustomDataVar|AppInfo_V1_0!"
}
data = {}
# generate random positions and lengths
lengths = np.random.random_integers(1, 999, len(labels))
positions = np.subtract(np.cumsum(lengths), lengths[0])
for length, pos, label in zip(lengths, positions, labels):
raw_text += six.b(labels[label])
raw_text += struct.pack('QQ', pos, length)
data[label] = (pos, length)
return raw_text, data

+ 6
- 6
nd2reader/label_map.py View File

@ -100,30 +100,30 @@ class LabelMap(object):
@property
def x_data(self):
"""Get the location of the x data
"""Get the location of the custom x data
Returns:
int: The location of the x data
int: The location of the custom x data
"""
return self._get_location(six.b("CustomData|X!"))
@property
def y_data(self):
"""Get the location of the y data
"""Get the location of the custom y data
Returns:
int: The location of the y data
int: The location of the custom y data
"""
return self._get_location(six.b("CustomData|Y!"))
@property
def z_data(self):
"""Get the location of the z data
"""Get the location of the custom z data
Returns:
int: The location of the z data
int: The location of the custom z data
"""
return self._get_location(six.b("CustomData|Z!"))


+ 75
- 0
tests/test_label_map.py View File

@ -0,0 +1,75 @@
import unittest
from nd2reader.label_map import LabelMap
from nd2reader.artificial import ArtificialND2
class TestLabelMap(unittest.TestCase):
def setUp(self):
self.raw_text, self.locations = ArtificialND2.create_label_map_bytes()
self.label_map = LabelMap(self.raw_text)
def test_image_text_info(self):
self.assertEqual(self.locations['image_text_info'][0], self.label_map.image_text_info)
def test_image_metadata(self):
self.assertEqual(self.locations['image_metadata'][0], self.label_map.image_metadata)
def test_image_attributes(self):
self.assertEqual(self.locations['image_attributes'][0], self.label_map.image_attributes)
def test_image_metadata_sequence(self):
self.assertEqual(self.locations['image_metadata_sequence'][0], self.label_map.image_metadata_sequence)
def test_image_calibration(self):
self.assertEqual(self.locations['image_calibration'][0], self.label_map.image_calibration)
def test_x_data(self):
self.assertEqual(self.locations['x_data'][0], self.label_map.x_data)
def test_y_data(self):
self.assertEqual(self.locations['y_data'][0], self.label_map.y_data)
def test_z_data(self):
self.assertEqual(self.locations['z_data'][0], self.label_map.z_data)
def test_roi_metadata(self):
self.assertEqual(self.locations['roi_metadata'][0], self.label_map.roi_metadata)
def test_pfs_status(self):
self.assertEqual(self.locations['pfs_status'][0], self.label_map.pfs_status)
def test_pfs_offset(self):
self.assertEqual(self.locations['pfs_offset'][0], self.label_map.pfs_offset)
def test_guid(self):
self.assertEqual(self.locations['guid'][0], self.label_map.guid)
def test_description(self):
self.assertEqual(self.locations['description'][0], self.label_map.description)
def test_camera_exposure_time(self):
self.assertEqual(self.locations['camera_exposure_time'][0], self.label_map.camera_exposure_time)
def test_camera_temp(self):
self.assertEqual(self.locations['camera_temp'][0], self.label_map.camera_temp)
def test_acquisition_times(self):
self.assertEqual(self.locations['acquisition_times'][0], self.label_map.acquisition_times)
def test_acquisition_times_2(self):
self.assertEqual(self.locations['acquisition_times_2'][0], self.label_map.acquisition_times_2)
def test_acquisition_frames(self):
self.assertEqual(self.locations['acquisition_frames'][0], self.label_map.acquisition_frames)
def test_lut_data(self):
self.assertEqual(self.locations['lut_data'][0], self.label_map.lut_data)
def test_grabber_settings(self):
self.assertEqual(self.locations['grabber_settings'][0], self.label_map.grabber_settings)
def test_custom_data(self):
self.assertEqual(self.locations['custom_data'][0], self.label_map.custom_data)
def test_app_info(self):
self.assertEqual(self.locations['app_info'][0], self.label_map.app_info)

Loading…
Cancel
Save