Skip to content

Commit

Permalink
add testing for MotionSVDMasks and MotionSVDSeries
Browse files Browse the repository at this point in the history
  • Loading branch information
alessandratrapani committed May 21, 2024
1 parent 651eeb8 commit 06302d3
Showing 1 changed file with 42 additions and 2 deletions.
44 changes: 42 additions & 2 deletions tests/test_on_data/test_behavior_interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import sleap_io
from hdmf.testing import TestCase
from natsort import natsorted
from ndx_facemap_motionsvd import MotionSVDMasks, MotionSVDSeries
from ndx_miniscope import Miniscope
from ndx_miniscope.utils import get_timestamps
from ndx_pose import PoseEstimation, PoseEstimationSeries
Expand Down Expand Up @@ -767,12 +768,22 @@ def setUpClass(cls):
description="Area of pupil.",
unit="unknown",
)
cls.pupil_area_raw__expected_metadata = dict(
cls.pupil_area_raw_expected_metadata = dict(
name="pupil_area_raw",
description="Raw unprocessed area of pupil.",
unit="unknown",
)

cls.motion_masks_module = "MotionSVDMasks"
cls.motion_masks_expected_metadata = dict(
name="MotionSVDMasks",
description="Motion masks",
)
cls.motion_series_module = "MotionSVDSeries"
cls.motion_series_expected_metadata = dict(
name="MotionSVDSeries",
description="Motion SVD components",
)
with h5py.File(cls.interface_kwargs["mat_file_path"], "r") as file:
cls.eye_tracking_test_data = file["proc"]["pupil"]["com"][:].T
cls.pupil_area_test_data = file["proc"]["pupil"]["area"][:].T
Expand All @@ -785,7 +796,13 @@ def check_extracted_metadata(self, metadata: dict):

self.assertIn(self.pupil_tracking_module, metadata["Behavior"])
self.assertEqual(self.pupil_area_expected_metadata, metadata["Behavior"]["PupilTracking"]["area"])
self.assertEqual(self.pupil_area_raw__expected_metadata, metadata["Behavior"]["PupilTracking"]["area_raw"])
self.assertEqual(self.pupil_area_raw_expected_metadata, metadata["Behavior"]["PupilTracking"]["area_raw"])

self.assertIn(self.motion_masks_module, metadata["Behavior"])
self.assertEqual(self.motion_masks_expected_metadata, metadata["Behavior"]["MotionSVDMasks"])

self.assertIn(self.motion_series_module, metadata["Behavior"])
self.assertEqual(self.motion_series_expected_metadata, metadata["Behavior"]["MotionSVDSeries"])

def check_read_nwb(self, nwbfile_path: str):
with NWBHDF5IO(path=nwbfile_path, mode="r", load_namespaces=True) as io:
Expand All @@ -809,6 +826,29 @@ def check_read_nwb(self, nwbfile_path: str):
self.assertEqual(pupil_area_raw_time_series.data.shape, self.pupil_area_raw_test_data.shape)
assert_array_equal(pupil_area_raw_time_series.data[:], self.pupil_area_raw_test_data)

self.assertIn("MotionSVDMasksMultivideo", nwbfile.processing["behavior"].data_interfaces)
motion_masks_container = nwbfile.processing["behavior"].data_interfaces["MotionSVDMasksMultivideo"]
self.assertIsInstance(motion_masks_container, MotionSVDMasks)
assert_array_equal(motion_masks_container.processed_frame_dimension[:], [295, 288])
assert_array_equal(motion_masks_container.mask_coordinates[:], [49, 0, 294, 287])
self.assertEqual(motion_masks_container.downsampling_factor, 4.0)
self.assertEqual(motion_masks_container["image_mask"].shape[0], 3)
self.assertIn("MotionSVDSeriesMultivideo", nwbfile.processing["behavior"].data_interfaces)
motion_seires_container = nwbfile.processing["behavior"].data_interfaces["MotionSVDSeriesMultivideo"]
self.assertIsInstance(motion_seires_container, MotionSVDSeries)
self.assertEqual(motion_seires_container.data.shape[0], 18078)
self.assertIn("MotionSVDMasksROI1", nwbfile.processing["behavior"].data_interfaces)
motion_masks_container = nwbfile.processing["behavior"].data_interfaces["MotionSVDMasksROI1"]
self.assertIsInstance(motion_masks_container, MotionSVDMasks)
assert_array_equal(motion_masks_container.processed_frame_dimension[:], [295, 288])
assert_array_equal(motion_masks_container.mask_coordinates[:], [147, 112, 279, 240])
self.assertEqual(motion_masks_container.downsampling_factor, 4.0)
self.assertEqual(motion_masks_container["image_mask"].shape[0], 3)
self.assertIn("MotionSVDSeriesROI1", nwbfile.processing["behavior"].data_interfaces)
motion_seires_container = nwbfile.processing["behavior"].data_interfaces["MotionSVDSeriesROI1"]
self.assertIsInstance(motion_seires_container, MotionSVDSeries)
self.assertEqual(motion_seires_container.data.shape[0], 18078)


if __name__ == "__main__":
unittest.main()

0 comments on commit 06302d3

Please sign in to comment.