Skip to content

Commit ded2063

Browse files
authored
Merge branch 'main' into dataset_stat
2 parents d497441 + e2a0008 commit ded2063

File tree

6 files changed

+47
-24
lines changed

6 files changed

+47
-24
lines changed

bioimageio/core/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"version": "0.5.1"
2+
"version": "0.5.2"
33
}

bioimageio/core/prediction_pipeline/_model_adapters/_keras_model_adapter.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import warnings
22
from typing import List, Optional, Sequence
3+
from marshmallow import missing
34

45
# by default, we use the keras integrated with tensorflow
56
try:
@@ -18,10 +19,11 @@
1819

1920
class KerasModelAdapter(ModelAdapter):
2021
def _load(self, *, devices: Optional[Sequence[str]] = None) -> None:
21-
try:
22-
model_tf_version = self.bioimageio_model.weights[self.weight_format].tensorflow_version.version
23-
except AttributeError:
22+
model_tf_version = self.bioimageio_model.weights["keras_hdf5"].tensorflow_version
23+
if model_tf_version is missing:
2424
model_tf_version = None
25+
else:
26+
model_tf_version = (int(model_tf_version.major), int(model_tf_version.minor))
2527

2628
if TF_VERSION is None or model_tf_version is None:
2729
warnings.warn("Could not check tensorflow versions. The prediction results may be wrong.")

bioimageio/core/prediction_pipeline/_model_adapters/_tensorflow_model_adapter.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import numpy as np
66
import tensorflow as tf
77
import xarray as xr
8+
from marshmallow import missing
89

910
from ._model_adapter import ModelAdapter
1011

@@ -34,10 +35,11 @@ def _load_model(self, weight_file):
3435
return str(weight_file)
3536

3637
def _load(self, *, devices: Optional[List[str]] = None):
37-
try:
38-
model_tf_version = self.bioimageio_model.weights[self.weight_format].tensorflow_version.version
39-
except AttributeError:
38+
model_tf_version = self.bioimageio_model.weights[self.weight_format].tensorflow_version
39+
if model_tf_version is missing:
4040
model_tf_version = None
41+
else:
42+
model_tf_version = (int(model_tf_version.major), int(model_tf_version.minor))
4143

4244
tf_version = tf.__version__
4345
tf_major_and_minor = tuple(map(int, tf_version.split(".")))[:2]

bioimageio/core/resource_io/io_.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import pathlib
33
from copy import deepcopy
4+
from tempfile import TemporaryDirectory
45
from typing import Dict, Optional, Sequence, Union
56
from zipfile import ZIP_DEFLATED, ZipFile
67

@@ -10,7 +11,12 @@
1011
from bioimageio.core.resource_io.nodes import ResourceDescription
1112
from bioimageio.spec import load_raw_resource_description
1213
from bioimageio.spec.shared import raw_nodes
13-
from bioimageio.spec.shared.common import BIOIMAGEIO_CACHE_PATH, get_class_name_from_type
14+
from bioimageio.spec.shared.common import (
15+
BIOIMAGEIO_CACHE_PATH,
16+
BIOIMAGEIO_USE_CACHE,
17+
get_class_name_from_type,
18+
no_cache_tmp_list,
19+
)
1420
from bioimageio.spec.shared.raw_nodes import ResourceDescription as RawResourceDescription
1521
from . import nodes
1622
from .utils import resolve_raw_resource_description, resolve_source
@@ -134,21 +140,26 @@ def _get_package_base_name(raw_rd: RawResourceDescription, weights_priority_orde
134140

135141

136142
def _get_tmp_package_path(raw_rd: RawResourceDescription, weights_priority_order: Optional[Sequence[str]]):
137-
package_file_name = _get_package_base_name(raw_rd, weights_priority_order)
138-
139-
cache_folder = BIOIMAGEIO_CACHE_PATH / "packages"
140-
cache_folder.mkdir(exist_ok=True, parents=True)
141-
package_path = (cache_folder / package_file_name).with_suffix(".zip")
142-
max_cached_packages_with_same_name = 100
143-
for p in range(max_cached_packages_with_same_name):
144-
if package_path.exists():
145-
package_path = (cache_folder / f"{package_file_name}p{p}").with_suffix(".zip")
143+
if BIOIMAGEIO_USE_CACHE:
144+
package_file_name = _get_package_base_name(raw_rd, weights_priority_order)
145+
cache_folder = BIOIMAGEIO_CACHE_PATH / "packages"
146+
cache_folder.mkdir(exist_ok=True, parents=True)
147+
148+
package_path = (cache_folder / package_file_name).with_suffix(".zip")
149+
max_cached_packages_with_same_name = 100
150+
for p in range(max_cached_packages_with_same_name):
151+
if package_path.exists():
152+
package_path = (cache_folder / f"{package_file_name}p{p}").with_suffix(".zip")
153+
else:
154+
break
146155
else:
147-
break
156+
raise FileExistsError(
157+
f"Already caching {max_cached_packages_with_same_name} versions of {cache_folder / package_file_name}!"
158+
)
148159
else:
149-
raise FileExistsError(
150-
f"Already caching {max_cached_packages_with_same_name} versions of {cache_folder / package_file_name}!"
151-
)
160+
tmp_dir = TemporaryDirectory()
161+
no_cache_tmp_list.append(tmp_dir)
162+
package_path = pathlib.Path(tmp_dir.name) / "file"
152163

153164
return package_path
154165

bioimageio/core/weight_converter/keras/tensorflow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def convert_weights_to_tensorflow_saved_model_bundle(
9393
weight_path = str(weight_spec.source)
9494

9595
if weight_spec.tensorflow_version:
96-
model_tf_major_ver = weight_spec.tensorflow_version.version[0]
96+
model_tf_major_ver = int(weight_spec.tensorflow_version.major)
9797
if model_tf_major_ver != tf_major_ver:
9898
raise RuntimeError(f"Tensorflow major versions of model {model_tf_major_ver} is not {tf_major_ver}")
9999

tests/test_cli.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import subprocess
23
from typing import Sequence
34

@@ -7,8 +8,8 @@
78
from bioimageio.core import load_resource_description
89

910

10-
def run_subprocess(commands: Sequence[str]) -> subprocess.CompletedProcess:
11-
return subprocess.run(commands, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8")
11+
def run_subprocess(commands: Sequence[str], **kwargs) -> subprocess.CompletedProcess:
12+
return subprocess.run(commands, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8", **kwargs)
1213

1314

1415
def test_validate_model(unet2d_nuclei_broad_model):
@@ -23,6 +24,13 @@ def test_cli_package(unet2d_nuclei_broad_model, tmp_path):
2324
assert out_path.exists()
2425

2526

27+
def test_cli_package_wo_cache(unet2d_nuclei_broad_model):
28+
env = os.environ.copy()
29+
env["BIOIMAGEIO_USE_CACHE"] = "false"
30+
ret = run_subprocess(["bioimageio", "package", unet2d_nuclei_broad_model], env=env)
31+
assert ret.returncode == 0, ret.stdout
32+
33+
2634
def test_cli_test_model(unet2d_nuclei_broad_model):
2735
ret = run_subprocess(["bioimageio", "test-model", unet2d_nuclei_broad_model])
2836
assert ret.returncode == 0, ret.stdout

0 commit comments

Comments
 (0)