From beac602cb08a69a8ef7d0fa7bac3935e26120d78 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Mon, 30 Oct 2023 16:54:48 +0100 Subject: [PATCH] Merged in from master --- model_server/accessors.py | 11 +++-------- model_server/process.py | 14 ++++++++++++++ model_server/util.py | 4 ---- tests/test_api.py | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/model_server/accessors.py b/model_server/accessors.py index 1bb5b6b4..0e5e2cc9 100644 --- a/model_server/accessors.py +++ b/model_server/accessors.py @@ -1,7 +1,6 @@ from abc import ABC, abstractmethod import os from pathlib import Path -from typing import Dict import numpy as np from skimage.io import imread @@ -9,6 +8,8 @@ from skimage.io import imread import czifile import tifffile +from model_server.process import is_mask + class GenericImageDataAccessor(ABC): @abstractmethod @@ -34,13 +35,7 @@ class GenericImageDataAccessor(ABC): return True if self.shape_dict['Z'] > 1 else False def is_mask(self): - if self._data.dtype == 'bool': - return True - elif self._data.dtype == 'uint8': - unique = np.unique(self._data) - if unique.shape[0] == 2 and np.all(unique == [0, 255]): - return True - return False + return is_mask(self._data) def get_one_channel_data (self, channel: int): c = int(channel) diff --git a/model_server/process.py b/model_server/process.py index 767cd1f6..48128223 100644 --- a/model_server/process.py +++ b/model_server/process.py @@ -6,6 +6,20 @@ from math import ceil, floor import numpy as np from skimage.exposure import rescale_intensity + +def is_mask(img): + """ + Return True if an image represents a binary mask + :param img: np.ndarray + """ + if img.dtype == 'bool': + return True + elif img.dtype == 'uint8': + unique = np.unique(img) + if unique.shape[0] == 2 and np.all(unique == [0, 255]): + return True + return False + def pad(yxcz, mpx: int): """ Pad and crop image data in Y and X axes to meet specific dimension diff --git a/model_server/util.py b/model_server/util.py index 1cc33753..8bc071ab 100644 --- a/model_server/util.py +++ b/model_server/util.py @@ -1,12 +1,10 @@ from pathlib import Path import re from time import localtime, strftime -from typing import List import pandas as pd from model_server.accessors import InMemoryDataAccessor, write_accessor_data_to_file -from model_server.models import Model def autonumber_new_directory(where: str, prefix: str) -> str: """ @@ -77,7 +75,6 @@ def loop_workflow( files: list, output_folder_path: str, workflow_func: callable, - models: List[Model], params: dict, export_batch_csvs: bool = True, write_intermediate_products: bool = True, @@ -98,7 +95,6 @@ def loop_workflow( export_kwargs = { 'input_file_path': ff, 'output_folder_path': output_folder_path, - 'models': models, **params, } diff --git a/tests/test_api.py b/tests/test_api.py index 778c378f..e8e11056 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -14,7 +14,7 @@ class TestServerBaseClass(unittest.TestCase): self.server_process = Process( target=uvicorn.run, - args=('api:app', ), + args=('model_server.api:app', ), kwargs={'host': host, 'port': port, 'log_level': 'debug'}, daemon=True ) -- GitLab