Skip to content

Commit a5f0d74

Browse files
authored
Miscellaneous API fixes (#197)
* fix miscellaneous bugs in api * format * fix numpy to int conversion
1 parent f912ff5 commit a5f0d74

File tree

5 files changed

+39
-12
lines changed

5 files changed

+39
-12
lines changed

wkcuber/api/Dataset.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,12 @@ def get_layer(self, layer_name) -> Layer:
6060
)
6161
return self.layers[layer_name]
6262

63-
def add_layer(self, layer_name, category, dtype=np.dtype("uint8"), num_channels=1):
63+
def add_layer(self, layer_name, category, dtype=None, num_channels=None):
64+
if dtype is None:
65+
dtype = np.dtype("uint8")
66+
if num_channels is None:
67+
num_channels = 1
68+
6469
# normalize the value of dtype in case the parameter was passed as a string
6570
dtype = np.dtype(dtype)
6671

wkcuber/api/Layer.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,16 @@ def _assert_mag_does_not_exist_yet(self, mag):
5858

5959

6060
class WKLayer(Layer):
61-
def add_mag(self, mag, block_len=32, file_len=32, block_type=1) -> WKMagDataset:
61+
def add_mag(
62+
self, mag, block_len=None, file_len=None, block_type=None
63+
) -> WKMagDataset:
64+
if block_len is None:
65+
block_len = 32
66+
if file_len is None:
67+
file_len = 32
68+
if block_type is None:
69+
block_type = wkw.Header.BLOCK_TYPE_RAW
70+
6271
# normalize the name of the mag
6372
mag = Mag(mag).to_layer_name()
6473

wkcuber/api/MagDataset.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ def write(self, data, offset=(0, 0, 0)):
3737
if current_offset == (-1, -1, -1)
3838
else tuple(min(x) for x in zip(current_offset, offset))
3939
)
40-
total_size = tuple(max(x) for x in zip(current_size, data.shape[-3:]))
40+
41+
old_end_offset = np.array(current_offset) + np.array(current_size)
42+
new_end_offset = np.array(offset) + np.array(data.shape[-3:])
43+
max_end_offset = np.array([old_end_offset, new_end_offset]).max(axis=0)
44+
total_size = tuple(max_end_offset - np.array(new_offset))
45+
4146
self.view.size = total_size
4247

4348
self.layer.dataset.properties._set_bounding_box_of_layer(

wkcuber/api/Properties/LayerProperties.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,14 @@ def get_bounding_box_offset(self) -> tuple:
109109
return tuple(self.bounding_box["topLeft"])
110110

111111
def _set_bounding_box_size(self, size):
112-
self._bounding_box["width"] = size[0]
113-
self._bounding_box["height"] = size[1]
114-
self._bounding_box["depth"] = size[2]
112+
# Cast to int in case the provided parameter contains numpy integer
113+
self._bounding_box["width"] = int(size[0])
114+
self._bounding_box["height"] = int(size[1])
115+
self._bounding_box["depth"] = int(size[2])
115116

116117
def _set_bounding_box_offset(self, offset):
117-
self._bounding_box["topLeft"] = offset
118+
# Cast to int in case the provided parameter contains numpy integer
119+
self._bounding_box["topLeft"] = tuple(map(int, offset))
118120

119121
@property
120122
def name(self) -> str:
@@ -194,7 +196,7 @@ def _from_json(cls, json_data, resolution_type, dataset_path):
194196
json_data["boundingBox"],
195197
None,
196198
json_data["largestSegmentId"],
197-
json_data["mappings"],
199+
json_data["mappings"] if "mappings" in json_data else None,
198200
)
199201

200202
# add resolutions to LayerProperties

wkcuber/api/TiffData/TiffMag.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ def detect_tile_ranges(
3838
if full_pattern.startswith(os.path.sep):
3939
prefix = "/"
4040

41-
detected_z_range, detected_x_range, detected_y_range = detect_tile_ranges_from_pattern_recursively(
41+
(
42+
detected_z_range,
43+
detected_x_range,
44+
detected_y_range,
45+
) = detect_tile_ranges_from_pattern_recursively(
4246
pattern_split, prefix, set(), set(), set()
4347
)
4448

@@ -57,9 +61,11 @@ def detect_tile_ranges_from_pattern_recursively(
5761
x_values: Set[int],
5862
y_values: Set[int],
5963
) -> Tuple[Optional[range], Optional[range], Optional[range]]:
60-
current_pattern_element, prefix, remaining_pattern_elements = advance_to_next_relevant_pattern_element(
61-
pattern_elements, prefix
62-
)
64+
(
65+
current_pattern_element,
66+
prefix,
67+
remaining_pattern_elements,
68+
) = advance_to_next_relevant_pattern_element(pattern_elements, prefix)
6369
items = os.listdir(prefix)
6470
for ls_item in items:
6571
_, file_extension = os.path.splitext(pattern_elements[-1])

0 commit comments

Comments
 (0)