Skip to content

Commit 3569d4f

Browse files
committed
chagned training resolution to dictionaries
1 parent dead9c4 commit 3569d4f

File tree

4 files changed

+22
-44
lines changed

4 files changed

+22
-44
lines changed

synaptic_reconstruction/tools/distance_measure_widget.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,7 @@ def on_measure_seg_to_object(self):
105105
resolution = segmentation.shape
106106
print("on_measure_seg_to_object resolution", resolution)
107107
# get image metadata
108-
scale = None
109-
if "Image data" in self.viewer.layers:
110-
if "voxel_size" in self.viewer.layers["Image data"].metadata.keys():
111-
voxel_size = self.viewer.layers["Image data"].metadata["voxel_size"]
112-
scale = compute_scale_from_voxel_size(voxel_size)
108+
113109
(distances,
114110
endpoints1,
115111
endpoints2,
@@ -122,7 +118,6 @@ def on_measure_seg_to_object(self):
122118
endpoints1=endpoints1,
123119
endpoints2=endpoints2,
124120
seg_ids=seg_ids,
125-
scale=scale
126121
)
127122
table_data = self._to_table_data(distances, seg_ids, endpoints1, endpoints2)
128123
self._add_lines_and_table(lines, properties, table_data, name="distances")
@@ -134,12 +129,7 @@ def on_measure_pairwise(self):
134129
return
135130
resolution = segmentation.shape
136131
# get image metadata
137-
scale = None
138-
if "Image data" in self.viewer.layers:
139-
print("image data in viewer layers")
140-
if "voxel_size" in self.viewer.layers["Image data"].metadata.keys():
141-
voxel_size = self.viewer.layers["Image data"].metadata["voxel_size"]
142-
scale = compute_scale_from_voxel_size(voxel_size)
132+
143133
(distances,
144134
endpoints1,
145135
endpoints2,
@@ -148,7 +138,6 @@ def on_measure_pairwise(self):
148138
)
149139
lines, properties = distance_measurements.create_pairwise_distance_lines(
150140
distances=distances, endpoints1=endpoints1, endpoints2=endpoints2, seg_ids=seg_ids.tolist(),
151-
scale=scale
152141
)
153142
table_data = self._to_table_data(
154143
distances=properties["distance"],

synaptic_reconstruction/tools/segmentation_widget.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,17 @@ def on_predict(self):
7474
# TODO: Use scale derived from the image resolution.
7575
# get avg image shape from training of the selected model
7676
# wichmann data avg voxel size = 17.53
77-
training_voxel_size = {
78-
"x": 17.48,
79-
"y": 17.48,
80-
"z": 17.48
81-
}
77+
8278
metadata = self._get_layer_selector_data(self.image_selector_name, return_metadata=True)
83-
if "voxel_size" in metadata.keys():
84-
voxel_size = metadata["voxel_size"]
85-
else:
86-
voxel_size = None
79+
voxel_size = metadata.get("voxel_size", None)
8780

8881
if self.scale_param.value() != 1.0: # changed from default
8982
scale = []
9083
for k in range(len(image.shape)):
9184
scale.append(self.scale_param.value())
9285
elif voxel_size:
9386
# calculate scale so voxel_size is the same as in training
94-
scale = compute_scale_from_voxel_size(voxel_size)
87+
scale = compute_scale_from_voxel_size(voxel_size, model_type)
9588
else:
9689
scale = None
9790
print(f"Rescaled the image by {scale} to optimize for the selected model.")

synaptic_reconstruction/tools/util.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,6 @@
1010
from ..inference.mitochondria import segment_mitochondria
1111

1212

13-
_TRAINING_VOXEL_SIZE = {
14-
"x": 17.48,
15-
"y": 17.48,
16-
"z": 17.48
17-
}
18-
19-
2013
def get_model(model_type: str, device: Optional[Union[str, torch.device]] = None) -> torch.nn.Module:
2114
"""Get the model for the given segmentation type.
2215
@@ -86,12 +79,12 @@ def get_cache_dir():
8679

8780
def get_model_training_resolution(model_type):
8881
resolutions = {
89-
"active_zone": 1.44,
90-
"compartments": 3.47,
82+
"active_zone": {"x": 1.44, "y": 1.44, "z": 1.44},
83+
"compartments": {"x": 3.47, "y": 3.47, "z": 3.47},
9184
"mitochondria": 1.0, # FIXME: this is a dummy value, we need to determine the real one
92-
"vesicles_2d": 1.35,
93-
"vesicles_3d": 1.35,
94-
"vesicles_cryo": 0.88,
85+
"vesicles_2d": {"x": 1.35, "y": 1.35},
86+
"vesicles_3d": {"x": 1.35, "y": 1.35, "z": 1.35},
87+
"vesicles_cryo": {"x": 1.35, "y": 1.35, "z": 0.88},
9588
}
9689
return resolutions[model_type]
9790

@@ -233,8 +226,9 @@ def compute_average_voxel_size(voxel_size: dict) -> float:
233226

234227
def compute_scale_from_voxel_size(
235228
voxel_size: dict,
236-
training_voxel_size=_TRAINING_VOXEL_SIZE
229+
model_type: str
237230
) -> List[float]:
231+
training_voxel_size = get_model_training_resolution(model_type)
238232
scale = [
239233
voxel_size["x"] / training_voxel_size["x"],
240234
voxel_size["y"] / training_voxel_size["y"],

synaptic_reconstruction/tools/volume_reader.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,19 @@ def read_image_volume(path: PathOrPaths) -> List[LayerData]:
7575

7676

7777
def read_voxel_size(input_path: str, layer_attributes: dict) -> None:
78-
with mrcfile.open(input_path) as mrc:
78+
"""_summary_
79+
80+
Args:
81+
input_path (str): _description_
82+
layer_attributes (dict): _description_
83+
"""
84+
with mrcfile.open(input_path, permissive=True) as mrc:
7985
try:
8086
voxel_size = mrc.voxel_size
8187
layer_attributes["voxel_size"] = {
82-
"x": voxel_size.x,
83-
"y": voxel_size.y,
84-
"z": voxel_size.z,
88+
"x": voxel_size.x / 10,
89+
"y": voxel_size.y / 10,
90+
"z": voxel_size.z / 10,
8591
}
8692
except Exception as e:
8793
print(f"Failed to read voxel size: {e}")
88-
# return mrc.voxel_size
89-
90-
# if __name__ == "__main__":
91-
# read_image_volume("/home/freckmann15/data/mitochondria/fidi_orig/20240722_WT/36859_J1_66K_TS_PS_01_rec_2kb1dawbp_crop_raw.mrc")

0 commit comments

Comments
 (0)