예제 #1
0
    def test_representation_voxel_grid(self, n_time_bins):
        orig_events, sensor_size = create_random_input()

        transform = transforms.ToVoxelGrid(
            sensor_size=sensor_size, n_time_bins=n_time_bins
        )

        volume = transform(orig_events)
        assert volume.shape == (n_time_bins, *sensor_size[1::-1])
        assert volume is not orig_events
예제 #2
0
    def test_representation_frame(
        self,
        time_window,
        event_count,
        n_time_bins,
        n_event_bins,
        overlap,
        include_incomplete,
        sensor_size,
    ):
        orig_events, _ = create_random_input(sensor_size=sensor_size)

        transform = transforms.ToFrame(
            sensor_size=sensor_size,
            time_window=time_window,
            event_count=event_count,
            n_time_bins=n_time_bins,
            n_event_bins=n_event_bins,
            overlap=overlap,
            include_incomplete=include_incomplete,
        )

        frames = transform(orig_events)

        assert frames.shape[1:] == sensor_size[::-1]
        if time_window is not None:
            stride = time_window - overlap
            times = orig_events["t"]
            if include_incomplete:
                assert frames.shape[0] == int(
                    np.ceil(((times[-1] - times[0]) - time_window) / stride) + 1
                )
            else:
                assert frames.shape[0] == int(
                    np.floor(((times[-1] - times[0]) - time_window) / stride) + 1
                )

        if event_count is not None:
            stride = event_count - overlap
            n_events = orig_events.shape[0]
            if include_incomplete:
                assert frames.shape[0] == int(
                    np.ceil((n_events - event_count) / stride) + 1
                )
            else:
                assert frames.shape[0] == int(
                    np.floor((n_events - event_count) / stride) + 1
                )

        if n_time_bins is not None:
            assert frames.shape[0] == n_time_bins

        if n_event_bins is not None:
            assert frames.shape[0] == n_event_bins
        assert frames is not orig_events
예제 #3
0
    def test_representation_avg_time_surface(self, surface_size, tau):
        orig_events, sensor_size = create_random_input()

        transform = transforms.ToAveragedTimesurface(
            sensor_size=sensor_size, surface_size=surface_size, tau=tau
        )

        surfaces = transform(orig_events)

        assert surfaces.shape[0] == len(orig_events)
        assert surfaces.shape[1] == 2
        assert surfaces.shape[2] == surface_size
        assert surfaces.shape[3] == surface_size
        assert surfaces is not orig_events
예제 #4
0
    def test_representation_time_surface(self, surface_dimensions, tau):
        orig_events, sensor_size = create_random_input()

        transform = transforms.ToTimesurface(
            sensor_size=sensor_size, surface_dimensions=surface_dimensions, tau=tau
        )

        surfaces = transform(orig_events)

        assert surfaces.shape[0] == len(orig_events)
        assert surfaces.shape[1] == 2
        if surface_dimensions:
            assert surfaces.shape[2:] == surface_dimensions
        else:
            assert surfaces.shape[2] == sensor_size[1]
            assert surfaces.shape[3] == sensor_size[0]
        assert surfaces is not orig_events
예제 #5
0
 def test_representation_frame_inferred(self):
     sensor_size = (20, 10, 2)
     orig_events, _ = create_random_input(n_events=30000, sensor_size=sensor_size)
     transform = transforms.ToFrame(sensor_size=None, time_window=25000)
     frames = transform(orig_events)
     assert frames.shape[1:] == sensor_size[::-1]