155 lines
4.7 KiB
Python
155 lines
4.7 KiB
Python
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
|
|
|
|
|