Skip to content

Commit 4754dac

Browse files
Merge pull request #178 from NeurodataWithoutBorders/spatial_series_dims
add check and tests for spatial_series with improper dimensions
2 parents baebc6d + 8b41342 commit 4754dac

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

nwbinspector/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
from .checks.ecephys import *
99
from .checks.ogen import *
1010
from .checks.image_series import *
11+
from .checks.behavior import *

nwbinspector/checks/behavior.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""Checks for types belonging to the pynwb.behavior module."""
2+
from pynwb.behavior import SpatialSeries
3+
4+
from ..register_checks import register_check, Importance, InspectorMessage
5+
6+
7+
@register_check(importance=Importance.CRITICAL, neurodata_type=SpatialSeries)
8+
def check_spatial_series_dims(spatial_series: SpatialSeries):
9+
"""Check if a SpatialSeries has the correct dimensions."""
10+
if len(spatial_series.data.shape) > 1 and spatial_series.data.shape[1] > 3:
11+
return InspectorMessage(
12+
message="SpatialSeries should have 1 column (x), 2 columns (x, y), or 3 columns (x, y, z)."
13+
)

tests/unit_tests/test_behavior.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from pynwb.behavior import SpatialSeries
2+
import numpy as np
3+
4+
from nwbinspector import InspectorMessage, Importance, check_spatial_series_dims
5+
6+
7+
def test_check_spatial_series_dims():
8+
9+
spatial_series = SpatialSeries(
10+
name="SpatialSeries",
11+
description="description",
12+
data=np.ones((10, 4)),
13+
rate=3.0,
14+
reference_frame="reference_frame",
15+
)
16+
assert check_spatial_series_dims(spatial_series) == InspectorMessage(
17+
message="SpatialSeries should have 1 column (x), 2 columns (x, y), or 3 columns (x, y, z).",
18+
importance=Importance.CRITICAL,
19+
check_function_name="check_spatial_series_dims",
20+
object_type="SpatialSeries",
21+
object_name="SpatialSeries",
22+
location="/",
23+
)
24+
25+
26+
def test_pass_check_spatial_series_dims():
27+
28+
spatial_series = SpatialSeries(
29+
name="SpatialSeries",
30+
description="description",
31+
data=np.ones((10, 3)),
32+
rate=3.0,
33+
reference_frame="reference_frame",
34+
)
35+
36+
assert check_spatial_series_dims(spatial_series) is None
37+
38+
39+
def test_pass_check_spatial_series_dims_1d():
40+
41+
spatial_series = SpatialSeries(
42+
name="SpatialSeries",
43+
description="description",
44+
data=np.ones((10,)),
45+
rate=3.0,
46+
reference_frame="reference_frame",
47+
)
48+
49+
assert check_spatial_series_dims(spatial_series) is None

0 commit comments

Comments
 (0)