feat: init
This commit is contained in:
154
test/model/metadata_sources/test_metadata.py
Normal file
154
test/model/metadata_sources/test_metadata.py
Normal file
@@ -0,0 +1,154 @@
|
||||
import pytest
|
||||
import random
|
||||
|
||||
|
||||
def test_metadata_voxel_size(dummy_model):
|
||||
from navigate.model.metadata_sources.metadata import Metadata
|
||||
|
||||
md = Metadata()
|
||||
|
||||
md.configuration = dummy_model.configuration
|
||||
|
||||
zoom = dummy_model.configuration["experiment"]["MicroscopeState"]["zoom"]
|
||||
active_microscope = dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"microscope_name"
|
||||
]
|
||||
pixel_size = float(
|
||||
dummy_model.configuration["configuration"]["microscopes"][active_microscope][
|
||||
"zoom"
|
||||
]["pixel_size"][zoom]
|
||||
)
|
||||
|
||||
dx, dy, dz = md.voxel_size
|
||||
|
||||
assert (
|
||||
(dx == pixel_size)
|
||||
and (dy == pixel_size)
|
||||
and (
|
||||
dz
|
||||
== float(
|
||||
dummy_model.configuration["experiment"]["MicroscopeState"]["step_size"]
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_metadata_shape(dummy_model):
|
||||
from navigate.model.metadata_sources.metadata import Metadata
|
||||
|
||||
dummy_model.configuration["experiment"]["MicroscopeState"]["image_mode"] = "z-stack"
|
||||
|
||||
md = Metadata()
|
||||
|
||||
md.configuration = dummy_model.configuration
|
||||
|
||||
microscope_name = dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"microscope_name"
|
||||
]
|
||||
txs = dummy_model.configuration["experiment"]["CameraParameters"][microscope_name][
|
||||
"img_x_pixels"
|
||||
]
|
||||
tys = dummy_model.configuration["experiment"]["CameraParameters"][microscope_name][
|
||||
"img_y_pixels"
|
||||
]
|
||||
tzs = dummy_model.configuration["experiment"]["MicroscopeState"]["number_z_steps"]
|
||||
tts = dummy_model.configuration["experiment"]["MicroscopeState"]["timepoints"]
|
||||
tcs = sum(
|
||||
[
|
||||
v["is_selected"] is True
|
||||
for k, v in dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"channels"
|
||||
].items()
|
||||
]
|
||||
)
|
||||
|
||||
xs, ys, cs, zs, ts = md.shape
|
||||
|
||||
assert (xs == txs) and (ys == tys) and (zs == tzs) and (ts == tts) and (cs == tcs)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"image_mode",
|
||||
[
|
||||
"single",
|
||||
"Confocal Projection",
|
||||
"z-stack",
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize("stack_cycling_mode", ["per_stack", "per_z"])
|
||||
@pytest.mark.parametrize("conpro_cycling_mode", ["per_stack", "per_plane"])
|
||||
def test_metadata_set_stack_order_from_configuration_experiment(
|
||||
dummy_model, image_mode, stack_cycling_mode, conpro_cycling_mode
|
||||
):
|
||||
from navigate.model.metadata_sources.metadata import Metadata
|
||||
|
||||
dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"image_mode"
|
||||
] = image_mode
|
||||
dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"stack_cycling_mode"
|
||||
] = stack_cycling_mode
|
||||
dummy_model.configuration["experiment"]["MicroscopeState"][
|
||||
"conpro_cycling_mode"
|
||||
] = conpro_cycling_mode
|
||||
|
||||
md = Metadata()
|
||||
|
||||
md.configuration = dummy_model.configuration
|
||||
|
||||
if image_mode == "z-stack" and stack_cycling_mode == "per_stack":
|
||||
assert md._per_stack is True
|
||||
elif image_mode == "Confocal Projection" and stack_cycling_mode == "per_stack":
|
||||
assert md._per_stack is True
|
||||
else:
|
||||
assert md._per_stack is False
|
||||
|
||||
def set_shape_from_configuration_experiment(dummy_model):
|
||||
from navigate.model.metadata_sources.metadata import Metadata
|
||||
|
||||
md = Metadata()
|
||||
|
||||
md.configuration = dummy_model.configuration.copy()
|
||||
|
||||
|
||||
# set up experiment with multiposition
|
||||
# no position
|
||||
md.configuration["experiment"]["MicroscopeState"]["image_mode"] = "z-stack"
|
||||
md.configuration["multi_positions"] = [
|
||||
["X", "Y", "Z", "THETA", "F"]
|
||||
]
|
||||
md.configuration["expriment"]["MicroscopeState"]["is_multiposition"] = False
|
||||
|
||||
md._set_shape_from_configuration_experiment()
|
||||
|
||||
assert md._multiposition is False
|
||||
assert md.positions == 1
|
||||
|
||||
# customized mode
|
||||
md.configuration["experiment"]["MicroscopeState"]["image_mode"] = "customized"
|
||||
assert md._multiposition is True
|
||||
assert md.positions == 1
|
||||
|
||||
# random multiposition
|
||||
md.configuration["experiment"]["MicroscopeState"]["image_mode"] = "z-stack"
|
||||
for i in range(5):
|
||||
num_positions = random.randint(2, 10)
|
||||
md.configuration["multi_positions"] = [["X", "Y", "Z", "THETA", "F"]]
|
||||
for p in range(num_positions):
|
||||
pos = [
|
||||
random.uniform(0, 100), # X
|
||||
random.uniform(0, 100), # Y
|
||||
random.uniform(0, 100), # Z
|
||||
random.uniform(0, 360), # THETA
|
||||
random.uniform(0, 10), # F
|
||||
]
|
||||
md.configuration["multi_positions"].append(pos)
|
||||
|
||||
md.configuration["experiment"]["MicroscopeState"]["is_multiposition"] = True
|
||||
|
||||
md._set_shape_from_configuration_experiment()
|
||||
|
||||
assert md._multiposition is True
|
||||
assert md.positions == num_positions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user