Skip to content

Commit 73a4097

Browse files
Add MicroscopyStaticImageContainer and related mock functions
1 parent a2b5c17 commit 73a4097

File tree

5 files changed

+50
-43
lines changed

5 files changed

+50
-43
lines changed

spec/ndx-microscopy.extensions.yaml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,17 @@ groups:
245245
quantity: "?"
246246

247247
- neurodata_type_def: MicroscopyStaticImage
248-
neurodata_type_inc: Image --> bisogna usare per forza container
248+
neurodata_type_inc: NWBDataInterface
249249
doc:
250250
Abstract class to contain static imaging data acquired from an optical channel in a microscope while a light source illuminates the
251251
imaging space.
252+
attributes:
253+
- name: name
254+
dtype: text
255+
doc: Name of the static image.
256+
- name: description
257+
dtype: text
258+
doc: Description of the static image.
252259
links:
253260
- name: microscopy_rig
254261
doc: Link to a MicroscopyRig object containing metadata about the microscopy rig used to acquire this imaging data.
@@ -303,6 +310,15 @@ groups:
303310
VolumetricImagingSpace object containing metadata about the region of physical space this imaging data
304311
was recorded from.
305312

313+
- neurodata_type_def: MicroscopyStaticImageContainer
314+
neurodata_type_inc: NWBDataInterface
315+
default_name: MicroscopyStaticImageContainer
316+
doc: A container of many MicroscopyStaticImage objects.
317+
groups:
318+
- neurodata_type_inc: MicroscopyStaticImage
319+
doc: MicroscopyStaticImage object containing imaging data for a single channel scan.
320+
quantity: "+"
321+
306322
- neurodata_type_def: MicroscopySeries
307323
neurodata_type_inc: TimeSeries
308324
doc:
@@ -371,29 +387,22 @@ groups:
371387
default_name: MultiPlaneMicroscopyContainer
372388
doc:
373389
Imaging data acquired over several depths, regularly or irregularly spaced; for instance, when using an
374-
electrically tunable lens. Each depth scan is stored in a separate PlanarMicroscopySeries or PlanarMicroscopyStaticImage object.
390+
electrically tunable lens. Each depth scan is stored in a separate PlanarMicroscopySeries object.
375391
groups:
376392
- neurodata_type_inc: PlanarMicroscopySeries
377393
doc: PlanarMicroscopySeries object(s) containing imaging data for a single depth scan.
378-
quantity: "*"
379-
- neurodata_type_inc: PlanarMicroscopyStaticImage
380-
doc: PlanarMicroscopyStaticImage object(s) containing imaging data for a single depth scan.
381-
quantity: "*"
394+
quantity: "+"
382395

383396
- neurodata_type_def: MultiChannelMicroscopyContainer
384397
neurodata_type_inc: NWBDataInterface
385398
default_name: MultiChannelMicroscopyContainer
386399
doc:
387400
Imaging data acquired over several channels; for instance, when using multiple excitation wavelengths
388-
or multiple indicators. Each channel is stored in a separate PlanarMicroscopySeries, VolumetricMicroscopySeries,
389-
PlanarMicroscopyStaticImage or VolumetricMicroscopyStaticImage.
401+
or multiple indicators. Each channel is stored in a separate PlanarMicroscopySeries or VolumetricMicroscopySeries.
390402
groups:
391403
- neurodata_type_inc: MicroscopySeries
392404
doc: MicroscopySeries object containing imaging data for a single channel scan.
393-
quantity: "*"
394-
- neurodata_type_inc: MicroscopyStaticImage
395-
doc: MicroscopyStaticImage object containing imaging data for a single channel scan.
396-
quantity: "*"
405+
quantity: "+"
397406

398407
- neurodata_type_def: SegmentationContainer
399408
neurodata_type_inc: NWBDataInterface

spec/ndx-microscopy.namespace.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ namespaces:
2020
- VectorData
2121
- VectorIndex
2222
- DynamicTableRegion
23-
- ImageSeries
2423
- namespace: ndx-ophys-devices
2524
neurodata_types:
2625
- ExcitationSource
2726
- Indicator
27+
- ViralVectorInjection
28+
- ViralVector
2829
- OpticalFilter
2930
- Photodetector
3031
- DichroicMirror

src/pynwb/ndx_microscopy/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
MicroscopyStaticImage = get_class("MicroscopyStaticImage", extension_name)
5959
PlanarMicroscopyStaticImage = get_class("PlanarMicroscopyStaticImage", extension_name)
6060
VolumetricMicroscopyStaticImage = get_class("VolumetricMicroscopyStaticImage", extension_name)
61+
MicroscopyStaticImageContainer = get_class("MicroscopyStaticImageContainer", extension_name)
6162
MicroscopySeries = get_class("MicroscopySeries", extension_name)
6263
PlanarMicroscopySeries = get_class("PlanarMicroscopySeries", extension_name)
6364
VolumetricMicroscopySeries = get_class("VolumetricMicroscopySeries", extension_name)
@@ -97,6 +98,7 @@
9798
"MicroscopyStaticImage",
9899
"PlanarMicroscopyStaticImage",
99100
"VolumetricMicroscopyStaticImage",
101+
"MicroscopyStaticImageContainer",
100102
"MultiPlaneMicroscopyContainer",
101103
"MultiChannelMicroscopyContainer",
102104
"MicroscopyResponseSeries",

src/pynwb/ndx_microscopy/testing/_mock.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -419,17 +419,29 @@ def mock_PlanarMicroscopyStaticImage(
419419
return planar_microscopy_static_image
420420

421421

422+
def mock_MicroscopyStaticImageContainer(
423+
*,
424+
microscopy_static_images: Optional[List[ndx_microscopy.MicroscopyStaticImage]] = None,
425+
name: Optional[str] = None,
426+
) -> ndx_microscopy.MicroscopyStaticImageContainer:
427+
container_name = name or name_generator("MicroscopyStaticImageContainer")
428+
429+
microscopy_static_image_container = ndx_microscopy.MicroscopyStaticImageContainer(
430+
name=container_name,
431+
microscopy_static_images=microscopy_static_images,
432+
)
433+
return microscopy_static_image_container
434+
435+
422436
def mock_MultiPlaneMicroscopyContainer(
423437
*,
424438
planar_microscopy_series: Optional[List[ndx_microscopy.PlanarMicroscopySeries]] = None,
425-
planar_microscopy_static_images: Optional[List[ndx_microscopy.PlanarMicroscopyStaticImage]] = None,
426439
name: Optional[str] = None,
427440
) -> ndx_microscopy.MultiPlaneMicroscopyContainer:
428441
container_name = name or name_generator("MultiPlaneMicroscopyContainer")
429442
multi_plane_microscopy_container = ndx_microscopy.MultiPlaneMicroscopyContainer(
430443
name=container_name,
431444
planar_microscopy_series=planar_microscopy_series,
432-
planar_microscopy_static_images=planar_microscopy_static_images,
433445
)
434446

435447
return multi_plane_microscopy_container
@@ -438,15 +450,13 @@ def mock_MultiPlaneMicroscopyContainer(
438450
def mock_MultiChannelMicroscopyContainer(
439451
*,
440452
microscopy_series: Optional[List[ndx_microscopy.MicroscopySeries]] = None,
441-
microscopy_static_images: Optional[List[ndx_microscopy.MicroscopyStaticImage]] = None,
442453
name: Optional[str] = None,
443454
) -> ndx_microscopy.MultiChannelMicroscopyContainer:
444455
container_name = name or name_generator("MultiChannelMicroscopyContainer")
445456

446457
multi_channel_microscopy_container = ndx_microscopy.MultiChannelMicroscopyContainer(
447458
name=container_name,
448459
microscopy_series=microscopy_series,
449-
microscopy_static_images=microscopy_static_images,
450460
)
451461
return multi_channel_microscopy_container
452462

src/pynwb/tests/test_constructors.py

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
"""Test in-memory Python API constructors for the ndx-microscopy extension."""
22

3-
from ndx_microscopy.testing._mock import mock_PlanarMicroscopyStaticImage, mock_VolumetricMicroscopyStaticImage
3+
from ndx_microscopy.testing._mock import (
4+
mock_MicroscopyStaticImageContainer,
5+
mock_PlanarMicroscopyStaticImage,
6+
mock_VolumetricMicroscopyStaticImage,
7+
)
48
import pytest
59

610
from ndx_microscopy.testing import (
@@ -73,7 +77,7 @@ def test_constructor_microscopy_experiment_metadata():
7377
indicator = mock_Indicator(name="Indicator1", viral_vector_injection=viral_vector_injection)
7478
microscopy_rig = mock_MicroscopyRig()
7579

76-
microscopy_experiment_metadata = MicroscopyExperimentMetadata(
80+
_ = MicroscopyExperimentMetadata(
7781
viral_vectors=[viral_vector],
7882
viral_vector_injections=[viral_vector_injection],
7983
indicators=[indicator],
@@ -220,7 +224,7 @@ def test_constructor_planar_microscopy_static_image():
220224
)
221225

222226

223-
def test_constructor_multi_plane_microscopy_container_with_series():
227+
def test_constructor_multi_plane_microscopy_container():
224228
from ndx_ophys_devices.testing import mock_Indicator
225229

226230
microscopy_channel = mock_MicroscopyChannel(indicator=mock_Indicator(name="Indicator1"))
@@ -239,26 +243,7 @@ def test_constructor_multi_plane_microscopy_container_with_series():
239243
assert multi_plane_microscopy_container.name == "MultiPlaneMicroscopyContainer"
240244

241245

242-
def test_constructor_multi_plane_microscopy_container_with_static_images():
243-
from ndx_ophys_devices.testing import mock_Indicator
244-
245-
microscopy_channel = mock_MicroscopyChannel(indicator=mock_Indicator(name="Indicator1"))
246-
microscopy_rig = mock_MicroscopyRig()
247-
planar_imaging_space = mock_PlanarImagingSpace()
248-
249-
planar_microscopy_static_image = mock_PlanarMicroscopyStaticImage(
250-
microscopy_rig=microscopy_rig,
251-
microscopy_channel=microscopy_channel,
252-
planar_imaging_space=planar_imaging_space,
253-
)
254-
255-
multi_plane_microscopy_container = mock_MultiPlaneMicroscopyContainer(
256-
planar_microscopy_static_images=[planar_microscopy_static_image]
257-
)
258-
assert multi_plane_microscopy_container.name == "MultiPlaneMicroscopyContainer"
259-
260-
261-
def test_constructor_multi_channel_microscopy_container_with_series():
246+
def test_constructor_multi_channel_microscopy_container():
262247
from ndx_ophys_devices.testing import mock_Indicator
263248

264249
microscopy_channel = mock_MicroscopyChannel(indicator=mock_Indicator(name="Indicator1"))
@@ -276,7 +261,7 @@ def test_constructor_multi_channel_microscopy_container_with_series():
276261
assert multi_channel_microscopy_container.name == "MultiChannelMicroscopyContainer"
277262

278263

279-
def test_constructor_multi_channel_microscopy_container_with_static_images():
264+
def test_constructor_microscopy_static_images_container():
280265
from ndx_ophys_devices.testing import mock_Indicator
281266

282267
microscopy_channel = mock_MicroscopyChannel(indicator=mock_Indicator(name="Indicator1"))
@@ -288,10 +273,10 @@ def test_constructor_multi_channel_microscopy_container_with_static_images():
288273
planar_imaging_space=planar_imaging_space,
289274
)
290275

291-
multi_channel_microscopy_container = mock_MultiChannelMicroscopyContainer(
276+
microscopy_static_image_container = mock_MicroscopyStaticImageContainer(
292277
microscopy_static_images=[planar_microscopy_static_image]
293278
)
294-
assert multi_channel_microscopy_container.name == "MultiChannelMicroscopyContainer"
279+
assert microscopy_static_image_container.name == "MicroscopyStaticImageContainer"
295280

296281

297282
def test_constructor_volumetric_microscopy_series():

0 commit comments

Comments
 (0)