diff --git a/conf/__init__.py b/model_server/base/__init__.py similarity index 100% rename from conf/__init__.py rename to model_server/base/__init__.py diff --git a/model_server/accessors.py b/model_server/base/accessors.py similarity index 99% rename from model_server/accessors.py rename to model_server/base/accessors.py index e634f2f07d7be338d9d7e6526021190001e2d839..712bbacf19296201775e1d7d49ef45b356ac1d1d 100644 --- a/model_server/accessors.py +++ b/model_server/base/accessors.py @@ -8,7 +8,7 @@ from skimage.io import imread import czifile import tifffile -from model_server.process import is_mask +from model_server.base.process import is_mask class GenericImageDataAccessor(ABC): diff --git a/model_server/api.py b/model_server/base/api.py similarity index 83% rename from model_server/api.py rename to model_server/base/api.py index bc9a57fe79288c2f63ebf79e055bf5785be2f823..b73175d482b4d5f352f5ca7f8b87b8104d9dccb1 100644 --- a/model_server/api.py +++ b/model_server/base/api.py @@ -1,16 +1,14 @@ from fastapi import FastAPI, HTTPException -from model_server.models import DummyImageToImageModel -from model_server.session import Session, InvalidPathError -from model_server.validators import validate_workflow_inputs -from model_server.workflows import infer_image_to_image -from extensions.ilastik.workflows import infer_px_then_ob_model +from model_server.base.models import DummyImageToImageModel +from model_server.base.session import Session, InvalidPathError +from model_server.base.validators import validate_workflow_inputs +from model_server.base.workflows import infer_image_to_image app = FastAPI(debug=True) session = Session() -import extensions.ilastik.router -app.include_router(extensions.ilastik.router.router) +app.include_router(model_server.extensions.ilastik.router.router) @app.on_event("startup") def startup(): diff --git a/model_server/batch.py b/model_server/base/batch.py similarity index 100% rename from model_server/batch.py rename to model_server/base/batch.py diff --git a/model_server/czi_util.py b/model_server/base/czi_util.py similarity index 97% rename from model_server/czi_util.py rename to model_server/base/czi_util.py index 4e97310ab247abbb2cc4e0f696105d40573cea6b..6c8c5db8c27eeefea2e4bad32122d34f306bf16e 100644 --- a/model_server/czi_util.py +++ b/model_server/base/czi_util.py @@ -5,7 +5,7 @@ import czifile import numpy as np import pandas as pd -from model_server.accessors import InMemoryDataAccessor +from model_server.base.accessors import InMemoryDataAccessor def dump_czi_subblock_table(czif: czifile.CziFile, where: Path): diff --git a/model_server/models.py b/model_server/base/models.py similarity index 95% rename from model_server/models.py rename to model_server/base/models.py index 4285b49c4d8a55bb3b77135d9e578546ea851d4c..014957be8ada6bc059a9da7852e561a6ad4e63b0 100644 --- a/model_server/models.py +++ b/model_server/base/models.py @@ -1,10 +1,9 @@ from abc import ABC, abstractmethod from math import floor -import os import numpy as np -from model_server.accessors import GenericImageDataAccessor, InMemoryDataAccessor +from model_server.base.accessors import GenericImageDataAccessor, InMemoryDataAccessor class Model(ABC): diff --git a/model_server/process.py b/model_server/base/process.py similarity index 100% rename from model_server/process.py rename to model_server/base/process.py diff --git a/model_server/session.py b/model_server/base/session.py similarity index 94% rename from model_server/session.py rename to model_server/base/session.py index 061711a5654a4b80d95209a422461aa406abc7b1..1b91b12a570ebd807cc89bf0b4e3a78771a524c9 100644 --- a/model_server/session.py +++ b/model_server/base/session.py @@ -5,10 +5,9 @@ from pathlib import Path from time import strftime, localtime from typing import Dict -import conf.defaults -from model_server.models import Model -from model_server.share import SharedImageDirectory -from model_server.workflows import WorkflowRunRecord +import model_server.conf.defaults +from model_server.base.models import Model +from model_server.base.workflows import WorkflowRunRecord def create_manifest_json(): pass @@ -51,13 +50,13 @@ class Session(object): :return: dictionary of session paths """ if root is None: - root_path = Path(conf.defaults.root) + root_path = Path(model_server.conf.defaults.root) else: root_path = Path(root) sid = Session.create_session_id(root_path) paths = {'root': root_path} for pk in ['inbound_images', 'outbound_images', 'logs']: - pa = root_path / sid / conf.defaults.subdirectories[pk] + pa = root_path / sid / model_server.conf.defaults.subdirectories[pk] paths[pk] = pa try: pa.mkdir(parents=True, exist_ok=True) diff --git a/model_server/share.py b/model_server/base/share.py similarity index 100% rename from model_server/share.py rename to model_server/base/share.py diff --git a/model_server/util.py b/model_server/base/util.py similarity index 97% rename from model_server/util.py rename to model_server/base/util.py index a88d5e1d0f5b49644372b82c39887bcc28e08f42..0d35d3c4bf267c95bc8e9527db473407f75f9c1b 100644 --- a/model_server/util.py +++ b/model_server/base/util.py @@ -6,8 +6,8 @@ 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 +from model_server.base.accessors import InMemoryDataAccessor, write_accessor_data_to_file +from model_server.base.models import Model def autonumber_new_directory(where: str, prefix: str) -> str: """ diff --git a/model_server/validators.py b/model_server/base/validators.py similarity index 91% rename from model_server/validators.py rename to model_server/base/validators.py index 56e251bc0bceee9c84d4254e746459d0bcf6c775..b4142b0f6ef99904d3bdb13fd7c5494e5df4fe18 100644 --- a/model_server/validators.py +++ b/model_server/base/validators.py @@ -1,6 +1,6 @@ from fastapi import HTTPException -from model_server.session import Session +from model_server.base.session import Session session = Session() diff --git a/model_server/workflows.py b/model_server/base/workflows.py similarity index 92% rename from model_server/workflows.py rename to model_server/base/workflows.py index c81d2afdc3e59e8153e1710524e286961ecd7746..e3eedb68d9ed2574180e47c1a16e65da5b50372e 100644 --- a/model_server/workflows.py +++ b/model_server/base/workflows.py @@ -5,8 +5,8 @@ from pathlib import Path from time import perf_counter from typing import Dict -from model_server.accessors import generate_file_accessor, write_accessor_data_to_file -from model_server.models import Model +from model_server.base.accessors import generate_file_accessor, write_accessor_data_to_file +from model_server.base.models import Model from pydantic import BaseModel diff --git a/extensions/__init__.py b/model_server/conf/__init__.py similarity index 100% rename from extensions/__init__.py rename to model_server/conf/__init__.py diff --git a/conf/defaults.py b/model_server/conf/defaults.py similarity index 100% rename from conf/defaults.py rename to model_server/conf/defaults.py diff --git a/conf/testing.py b/model_server/conf/testing.py similarity index 100% rename from conf/testing.py rename to model_server/conf/testing.py diff --git a/extensions/chaeo/__init__.py b/model_server/extensions/__init__.py similarity index 100% rename from extensions/chaeo/__init__.py rename to model_server/extensions/__init__.py diff --git a/extensions/chaeo/batch_jobs/__init__.py b/model_server/extensions/chaeo/__init__.py similarity index 100% rename from extensions/chaeo/batch_jobs/__init__.py rename to model_server/extensions/chaeo/__init__.py diff --git a/extensions/chaeo/accessors.py b/model_server/extensions/chaeo/accessors.py similarity index 97% rename from extensions/chaeo/accessors.py rename to model_server/extensions/chaeo/accessors.py index 82f726ba86fddf817583e349027a83b134d483e2..0e6cfdc07bba6479df9b738afa880612f0e244e8 100644 --- a/extensions/chaeo/accessors.py +++ b/model_server/extensions/chaeo/accessors.py @@ -2,7 +2,7 @@ from pathlib import Path import numpy as np -from model_server.accessors import generate_file_accessor, InMemoryDataAccessor +from model_server.base.accessors import generate_file_accessor, InMemoryDataAccessor class MonoPatchStack(InMemoryDataAccessor): diff --git a/extensions/chaeo/annotators.py b/model_server/extensions/chaeo/annotators.py similarity index 97% rename from extensions/chaeo/annotators.py rename to model_server/extensions/chaeo/annotators.py index eb4996c30a1f23de8731a4e74ac4d0ba88ef5aa0..050123a496291668794c13553c23a31b3b559def 100644 --- a/extensions/chaeo/annotators.py +++ b/model_server/extensions/chaeo/annotators.py @@ -1,7 +1,7 @@ import numpy as np from PIL import Image, ImageDraw, ImageFont -from model_server.process import rescale +from model_server.base.process import rescale def draw_boxes_on_2d_image(yx_img, boxes, **kwargs): pilimg = Image.fromarray(np.copy(yx_img)) # drawing modifies array in-place diff --git a/extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py b/model_server/extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py similarity index 85% rename from extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py rename to model_server/extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py index 072f037e2590e13b4fa0a981e499c80cd48a1c6f..9e4e80168a9931dad12224d9ddc34ca2a7de2d17 100644 --- a/extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py +++ b/model_server/extensions/chaeo/batch_jobs/20230805_kristineberg_PA.py @@ -1,10 +1,10 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel -from model_server.accessors import CziImageFileAccessor, write_accessor_data_to_file, InMemoryDataAccessor -from model_server.process import rescale +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.accessors import CziImageFileAccessor, write_accessor_data_to_file, InMemoryDataAccessor +from model_server.base.process import rescale def export_single_channel_tif_from_multichannel_czi(input_file_path, output_folder_path, channel, **kwargs): diff --git a/extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py b/model_server/extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py similarity index 86% rename from extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py rename to model_server/extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py index 3fbe1e081074af5a5f57e4de3bdb5528e690edf9..cfdd0531f4744822382cbe6df83a52e44aa3a9cd 100644 --- a/extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py +++ b/model_server/extensions/chaeo/batch_jobs/20230807_kristineberg_spiked.py @@ -1,8 +1,8 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel # TODO: support list-comp of single image sequence in multiple locations diff --git a/extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py b/model_server/extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py similarity index 92% rename from extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py rename to model_server/extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py index 78c7f06ce358ad265dd0e8e12aec154a44b54d7c..e0929874f5fc1fc272fa7be9ff99e45da20b21b0 100644 --- a/extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py +++ b/model_server/extensions/chaeo/batch_jobs/20231008_Bilbao_PA.py @@ -2,9 +2,9 @@ from pathlib import Path import pandas as pd -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel def write_ecotaxa_tsv(patches_csv_path, where): # import patch output table diff --git a/extensions/chaeo/batch_jobs/20231023_Porto_4ch.py b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_4ch.py similarity index 82% rename from extensions/chaeo/batch_jobs/20231023_Porto_4ch.py rename to model_server/extensions/chaeo/batch_jobs/20231023_Porto_4ch.py index f3962b11330fcf478e9815beafd56b486a9da3a9..a421c791082d5bc7440d2458742d6e6659377dfd 100644 --- a/extensions/chaeo/batch_jobs/20231023_Porto_4ch.py +++ b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_4ch.py @@ -2,12 +2,12 @@ from pathlib import Path import czifile -from model_server.accessors import write_accessor_data_to_file -from model_server.czi_util import get_accessor_from_multiposition_czi -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.ecotaxa import write_ecotaxa_tsv_chunked_subdirectories -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.accessors import write_accessor_data_to_file +from model_server.base.czi_util import get_accessor_from_multiposition_czi +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.ecotaxa import write_ecotaxa_tsv_chunked_subdirectories +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': diff --git a/extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py similarity index 84% rename from extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py rename to model_server/extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py index ebfec6cea60bd3a92c0930593919ace67c576ef9..abc8eeecb27d640de21222a8b419dcb7f669bff1 100644 --- a/extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py +++ b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_EtOHfixed.py @@ -1,9 +1,9 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.ecotaxa import write_ecotaxa_tsv -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.ecotaxa import write_ecotaxa_tsv +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': diff --git a/extensions/chaeo/batch_jobs/20231023_Porto_Live.py b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_Live.py similarity index 84% rename from extensions/chaeo/batch_jobs/20231023_Porto_Live.py rename to model_server/extensions/chaeo/batch_jobs/20231023_Porto_Live.py index 8a8c8b641586c5e6097a312f95e45d07dc92dd79..e458f7a362d4f7f85aee730e79b78318b556782b 100644 --- a/extensions/chaeo/batch_jobs/20231023_Porto_Live.py +++ b/model_server/extensions/chaeo/batch_jobs/20231023_Porto_Live.py @@ -1,9 +1,9 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.ecotaxa import write_ecotaxa_tsv -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.ecotaxa import write_ecotaxa_tsv +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': diff --git a/extensions/chaeo/batch_jobs/20231026_Porto.py b/model_server/extensions/chaeo/batch_jobs/20231026_Porto.py similarity index 84% rename from extensions/chaeo/batch_jobs/20231026_Porto.py rename to model_server/extensions/chaeo/batch_jobs/20231026_Porto.py index 3e31a859be55825a4b59f1b4be47741ab8f67413..17b83355d9855d32182dc20c2b30c48523a40ecd 100644 --- a/extensions/chaeo/batch_jobs/20231026_Porto.py +++ b/model_server/extensions/chaeo/batch_jobs/20231026_Porto.py @@ -1,9 +1,9 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.ecotaxa import write_ecotaxa_tsv -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.ecotaxa import write_ecotaxa_tsv +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': diff --git a/extensions/chaeo/batch_jobs/20231028_Porto_PA.py b/model_server/extensions/chaeo/batch_jobs/20231028_Porto_PA.py similarity index 83% rename from extensions/chaeo/batch_jobs/20231028_Porto_PA.py rename to model_server/extensions/chaeo/batch_jobs/20231028_Porto_PA.py index 7e02c856ed24e7cb9e727c12f02dcb3687cc8e22..4ae729d10601f0020cc4e85fdbff8ca2ffa9e785 100644 --- a/extensions/chaeo/batch_jobs/20231028_Porto_PA.py +++ b/model_server/extensions/chaeo/batch_jobs/20231028_Porto_PA.py @@ -1,9 +1,9 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.ecotaxa import write_ecotaxa_tsv_chunked_subdirectories -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.ecotaxa import write_ecotaxa_tsv_chunked_subdirectories +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': diff --git a/extensions/chaeo/conf/__init__.py b/model_server/extensions/chaeo/batch_jobs/__init__.py similarity index 100% rename from extensions/chaeo/conf/__init__.py rename to model_server/extensions/chaeo/batch_jobs/__init__.py diff --git a/extensions/chaeo/batch_jobs/coloring_book.py b/model_server/extensions/chaeo/batch_jobs/coloring_book.py similarity index 86% rename from extensions/chaeo/batch_jobs/coloring_book.py rename to model_server/extensions/chaeo/batch_jobs/coloring_book.py index 7e32ad74de366ffd1202b8d365d776315ab92b59..a3a9c5268a12cac204897d9ecd5dba4d8a648ad6 100644 --- a/extensions/chaeo/batch_jobs/coloring_book.py +++ b/model_server/extensions/chaeo/batch_jobs/coloring_book.py @@ -7,9 +7,9 @@ from skimage.measure import label, regionprops_table import tifffile -from extensions.chaeo.accessors import MonoPatchStack -from extensions.ilastik.models import IlastikPixelClassifierModel -from model_server.accessors import write_accessor_data_to_file, InMemoryDataAccessor +from model_server.extensions.chaeo.accessors import MonoPatchStack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.accessors import write_accessor_data_to_file, InMemoryDataAccessor if __name__ == '__main__': root = Path('c:/Users/rhodes/projects/proj0011-plankton-seg/exp0024') diff --git a/extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py b/model_server/extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py similarity index 82% rename from extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py rename to model_server/extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py index 93a9cf6f868543d6bafa56b7ed6daa7dc0681550..efa8a8e7bc5fe0e3091276095d79a2bc4eda8211 100644 --- a/extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py +++ b/model_server/extensions/chaeo/batch_jobs/proj0004-exp0038-fixed.py @@ -1,8 +1,8 @@ from pathlib import Path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.workflows import export_patches_from_multichannel_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.workflows import export_patches_from_multichannel_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel if __name__ == '__main__': where_czi = 'z:/rhodes/projects/proj0004-marine-photoactivation/data/exp0038/AutoMic/20230906-163415/Selection' diff --git a/extensions/chaeo/examples/__init__.py b/model_server/extensions/chaeo/conf/__init__.py similarity index 100% rename from extensions/chaeo/examples/__init__.py rename to model_server/extensions/chaeo/conf/__init__.py diff --git a/extensions/chaeo/conf/testing.py b/model_server/extensions/chaeo/conf/testing.py similarity index 100% rename from extensions/chaeo/conf/testing.py rename to model_server/extensions/chaeo/conf/testing.py diff --git a/extensions/chaeo/ecotaxa.py b/model_server/extensions/chaeo/ecotaxa.py similarity index 100% rename from extensions/chaeo/ecotaxa.py rename to model_server/extensions/chaeo/ecotaxa.py diff --git a/extensions/chaeo/tests/__init__.py b/model_server/extensions/chaeo/examples/__init__.py similarity index 100% rename from extensions/chaeo/tests/__init__.py rename to model_server/extensions/chaeo/examples/__init__.py diff --git a/extensions/chaeo/examples/batch_obj_cla.py b/model_server/extensions/chaeo/examples/batch_obj_cla.py similarity index 74% rename from extensions/chaeo/examples/batch_obj_cla.py rename to model_server/extensions/chaeo/examples/batch_obj_cla.py index ec230d79587c70d748ac5777de21b1501ce51fd3..7471034f7091efec74c2cbf6230df385960d2ec9 100644 --- a/extensions/chaeo/examples/batch_obj_cla.py +++ b/model_server/extensions/chaeo/examples/batch_obj_cla.py @@ -1,10 +1,10 @@ from pathlib import Path -from conf.testing import output_path -from model_server.util import autonumber_new_directory, get_matching_files, loop_workflow -from extensions.chaeo.models import PatchStackObjectClassifier -from extensions.chaeo.workflows import infer_object_map_from_zstack -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.conf.testing import output_path +from model_server.base.util import autonumber_new_directory, get_matching_files, loop_workflow +from model_server.extensions.chaeo.models import PatchStackObjectClassifier +from model_server.extensions.chaeo.workflows import infer_object_map_from_zstack +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel diff --git a/extensions/chaeo/examples/export_patch_focus_metrics.py b/model_server/extensions/chaeo/examples/export_patch_focus_metrics.py similarity index 91% rename from extensions/chaeo/examples/export_patch_focus_metrics.py rename to model_server/extensions/chaeo/examples/export_patch_focus_metrics.py index 31258117785c6d26ea0bc48f2110432d43467c62..7e1279948ea90b10463f19d50b0d8412e605d12c 100644 --- a/extensions/chaeo/examples/export_patch_focus_metrics.py +++ b/model_server/extensions/chaeo/examples/export_patch_focus_metrics.py @@ -3,15 +3,13 @@ import re from time import localtime, strftime from typing import Dict -import numpy as np import pandas as pd -from skimage.filters import gaussian, sobel -from extensions.ilastik.models import IlastikPixelClassifierModel -from extensions.chaeo.products import export_3d_patches_with_focus_metrics, export_patches_from_zstack -from extensions.chaeo.zmask import build_zmask_from_object_mask -from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file -from model_server.workflows import Timer +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.extensions.chaeo.products import export_3d_patches_with_focus_metrics, export_patches_from_zstack +from model_server.extensions.chaeo.zmask import build_zmask_from_object_mask +from model_server.base.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file +from model_server.base.workflows import Timer def export_patch_focus_metrics_from_multichannel_zstack( diff --git a/extensions/chaeo/examples/label_patches.py b/model_server/extensions/chaeo/examples/label_patches.py similarity index 81% rename from extensions/chaeo/examples/label_patches.py rename to model_server/extensions/chaeo/examples/label_patches.py index b84b1690202a039e0cbdd91733c75b9069c2b619..54b242eea0e7b0c25eb2ea8f09b249f65fb94100 100644 --- a/extensions/chaeo/examples/label_patches.py +++ b/model_server/extensions/chaeo/examples/label_patches.py @@ -1,7 +1,7 @@ from pathlib import Path -from model_server.util import autonumber_new_directory -from extensions.chaeo.workflows import transfer_ecotaxa_labels_to_patch_stacks +from model_server.base.util import autonumber_new_directory +from model_server.extensions.chaeo.workflows import transfer_ecotaxa_labels_to_patch_stacks if __name__ == '__main__': root = Path('c:/Users/rhodes/projects/proj0011-plankton-seg/exp0009/output') diff --git a/extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py b/model_server/extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py similarity index 93% rename from extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py rename to model_server/extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py index b6b2941b2f091d71b0ebc22f1d21ac7164de0e01..ae30674583dee43e234688ffc985da0049e939fd 100644 --- a/extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py +++ b/model_server/extensions/chaeo/examples/transfer_labels_to_ilastik_object_classifier.py @@ -3,9 +3,9 @@ import numpy as np import pandas as pd import skimage -from extensions.chaeo.accessors import MonoPatchStackFromFile -from extensions.chaeo.models import generate_ilastik_object_classifier, PatchStackObjectClassifier -from model_server.accessors import GenericImageDataAccessor, write_accessor_data_to_file +from model_server.extensions.chaeo.accessors import MonoPatchStackFromFile +from model_server.extensions.chaeo.models import generate_ilastik_object_classifier, PatchStackObjectClassifier +from model_server.base.accessors import GenericImageDataAccessor, write_accessor_data_to_file def compare_object_maps(truth: GenericImageDataAccessor, inferred: GenericImageDataAccessor) -> pd.DataFrame: diff --git a/extensions/chaeo/h5util.py b/model_server/extensions/chaeo/h5util.py similarity index 100% rename from extensions/chaeo/h5util.py rename to model_server/extensions/chaeo/h5util.py diff --git a/extensions/chaeo/models.py b/model_server/extensions/chaeo/models.py similarity index 96% rename from extensions/chaeo/models.py rename to model_server/extensions/chaeo/models.py index d488a699eb70c7ce17220c9dc2c3133ea6c0803a..7f8c08bdcd490f8d7803583c3fe4b87c6e2d221d 100644 --- a/extensions/chaeo/models.py +++ b/model_server/extensions/chaeo/models.py @@ -6,8 +6,8 @@ import numpy as np import skimage import vigra -from extensions.chaeo.accessors import MonoPatchStack, MonoPatchStackFromFile -from extensions.ilastik.models import IlastikObjectClassifierFromSegmentationModel +from model_server.extensions.chaeo.accessors import MonoPatchStack, MonoPatchStackFromFile +from model_server.extensions.ilastik.models import IlastikObjectClassifierFromSegmentationModel class PatchStackObjectClassifier(IlastikObjectClassifierFromSegmentationModel): diff --git a/extensions/chaeo/process.py b/model_server/extensions/chaeo/process.py similarity index 97% rename from extensions/chaeo/process.py rename to model_server/extensions/chaeo/process.py index 884cc3feda2703b1848e0cf86ae995d3144dc973..e41578eee35f7849e7d714326c59ca68e34042b0 100644 --- a/extensions/chaeo/process.py +++ b/model_server/extensions/chaeo/process.py @@ -1,7 +1,7 @@ import numpy as np import skimage -from model_server.process import is_mask +from model_server.base.process import is_mask def mask_largest_object( img: np.ndarray, diff --git a/extensions/chaeo/products.py b/model_server/extensions/chaeo/products.py similarity index 97% rename from extensions/chaeo/products.py rename to model_server/extensions/chaeo/products.py index 0f1ac9765728c182914d59b17d87ae6598a5271c..b1b1dc1f0fd92af2d8d4789457788c46ec513370 100644 --- a/extensions/chaeo/products.py +++ b/model_server/extensions/chaeo/products.py @@ -9,10 +9,10 @@ from skimage.io import imsave from skimage.measure import find_contours, shannon_entropy from tifffile import imwrite -from extensions.chaeo.accessors import MonoPatchStack, Multichannel3dPatchStack -from extensions.chaeo.annotators import draw_box_on_patch, draw_contours_on_patch -from model_server.accessors import GenericImageDataAccessor, InMemoryDataAccessor -from model_server.process import pad, rescale, resample_to_8bit +from model_server.extensions.chaeo.accessors import MonoPatchStack, Multichannel3dPatchStack +from model_server.extensions.chaeo.annotators import draw_box_on_patch, draw_contours_on_patch +from model_server.base.accessors import GenericImageDataAccessor, InMemoryDataAccessor +from model_server.base.process import pad, rescale, resample_to_8bit def _make_rgb(zs): h, w, c, nz = zs.shape diff --git a/extensions/chaeo/router.py b/model_server/extensions/chaeo/router.py similarity index 82% rename from extensions/chaeo/router.py rename to model_server/extensions/chaeo/router.py index 208aa7b9ff3e0a79b4bcdfa7d3742cd7bfa5c3e1..decf71c6852b41fe2295776f14ba43d2ca4559b8 100644 --- a/extensions/chaeo/router.py +++ b/model_server/extensions/chaeo/router.py @@ -1,8 +1,8 @@ -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter -from extensions.chaeo.workflows import infer_object_map_from_zstack -from model_server.session import Session -from model_server.validators import validate_workflow_inputs +from model_server.extensions.chaeo.workflows import infer_object_map_from_zstack +from model_server.base.session import Session +from model_server.base.validators import validate_workflow_inputs router = APIRouter( prefix='/chaeo', diff --git a/extensions/ilastik/__init__.py b/model_server/extensions/chaeo/tests/__init__.py similarity index 100% rename from extensions/ilastik/__init__.py rename to model_server/extensions/chaeo/tests/__init__.py diff --git a/extensions/chaeo/tests/test_accessors.py b/model_server/extensions/chaeo/tests/test_accessors.py similarity index 90% rename from extensions/chaeo/tests/test_accessors.py rename to model_server/extensions/chaeo/tests/test_accessors.py index c2194581a7e41aba1269b3eeb3368b434bc4d718..d7986879407e8114ec218be125e71033acf34f09 100644 --- a/extensions/chaeo/tests/test_accessors.py +++ b/model_server/extensions/chaeo/tests/test_accessors.py @@ -2,8 +2,8 @@ import unittest import numpy as np -from conf.testing import monozstackmask -from extensions.chaeo.accessors import MonoPatchStack, MonoPatchStackFromFile, Multichannel3dPatchStack +from model_server.conf.testing import monozstackmask +from model_server.extensions.chaeo.accessors import MonoPatchStack, MonoPatchStackFromFile, Multichannel3dPatchStack @@ -41,7 +41,7 @@ class TestCziImageFileAccess(unittest.TestCase): self.assertEqual(acc.fpath, monozstackmask['path']) def test_raises_filenotfound(self): - from extensions.chaeo.accessors import FileNotFoundError + from model_server.extensions.chaeo.accessors import FileNotFoundError with self.assertRaises(FileNotFoundError): acc = MonoPatchStackFromFile('c:/fake/file/name.tif') diff --git a/extensions/chaeo/tests/test_process.py b/model_server/extensions/chaeo/tests/test_process.py similarity index 93% rename from extensions/chaeo/tests/test_process.py rename to model_server/extensions/chaeo/tests/test_process.py index ad590274520e77ba45d1d377c0da25b935078920..79e6883c5f7099869b9b9901474c5c4cb833d158 100644 --- a/extensions/chaeo/tests/test_process.py +++ b/model_server/extensions/chaeo/tests/test_process.py @@ -2,7 +2,7 @@ import unittest import numpy as np -from extensions.chaeo.process import mask_largest_object +from model_server.extensions.chaeo.process import mask_largest_object class TestMaskLargestObject(unittest.TestCase): def test_mask_largest_touching_object(self): diff --git a/extensions/chaeo/tests/test_zstack.py b/model_server/extensions/chaeo/tests/test_zstack.py similarity index 90% rename from extensions/chaeo/tests/test_zstack.py rename to model_server/extensions/chaeo/tests/test_zstack.py index 53cdac09349611a2e801d2a7d96e5a13056da5d6..5a8d62ab0da97eaccb7d05083c78b3df9d9a61d1 100644 --- a/extensions/chaeo/tests/test_zstack.py +++ b/model_server/extensions/chaeo/tests/test_zstack.py @@ -2,13 +2,13 @@ import unittest import numpy as np -from conf.testing import output_path +from model_server.conf.testing import output_path -from extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params -from extensions.chaeo.products import export_patches_from_zstack, export_multichannel_patches_from_zstack, export_patch_masks_from_zstack -from extensions.chaeo.zmask import build_zmask_from_object_mask -from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file -from extensions.ilastik.models import IlastikPixelClassifierModel +from model_server.extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params +from model_server.extensions.chaeo.products import export_patches_from_zstack, export_multichannel_patches_from_zstack, export_patch_masks_from_zstack +from model_server.extensions.chaeo.zmask import build_zmask_from_object_mask +from model_server.base.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel class TestZStackDerivedDataProducts(unittest.TestCase): @@ -110,7 +110,7 @@ class TestZStackDerivedDataProducts(unittest.TestCase): mask_type='boxes', ) - from extensions.chaeo.zmask import project_stack_from_focal_points + from model_server.extensions.chaeo.zmask import project_stack_from_focal_points dff = df[df['keeper']] diff --git a/extensions/chaeo/workflows.py b/model_server/extensions/chaeo/workflows.py similarity index 94% rename from extensions/chaeo/workflows.py rename to model_server/extensions/chaeo/workflows.py index 6adf7a077395f331061754b3061a2f4a2c8af210..c7995acd2e56d13fe62cf4e0d9b90c2312456b81 100644 --- a/extensions/chaeo/workflows.py +++ b/model_server/extensions/chaeo/workflows.py @@ -4,22 +4,21 @@ from uuid import uuid4 import numpy as np import pandas as pd -from skimage.measure import label, regionprops_table +from skimage.measure import label from skimage.morphology import dilation from sklearn.model_selection import train_test_split -from extensions.chaeo.accessors import MonoPatchStack -from extensions.chaeo.annotators import draw_boxes_on_3d_image -from extensions.chaeo.models import PatchStackObjectClassifier -from extensions.chaeo.process import mask_largest_object -from extensions.chaeo.products import export_patches_from_zstack, export_patch_masks_from_zstack, export_multichannel_patches_from_zstack, get_patches_from_zmask_meta, get_patch_masks_from_zmask_meta -from extensions.chaeo.zmask import build_zmask_from_object_mask, project_stack_from_focal_points -from extensions.ilastik.models import IlastikPixelClassifierModel - -from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file -from model_server.models import Model -from model_server.process import rescale -from model_server.workflows import Timer +from model_server.extensions.chaeo.annotators import draw_boxes_on_3d_image +from model_server.extensions.chaeo.models import PatchStackObjectClassifier +from model_server.extensions.chaeo.process import mask_largest_object +from model_server.extensions.chaeo.products import export_patches_from_zstack, export_patch_masks_from_zstack, export_multichannel_patches_from_zstack, get_patches_from_zmask_meta, get_patch_masks_from_zmask_meta +from model_server.extensions.chaeo.zmask import build_zmask_from_object_mask, project_stack_from_focal_points +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel + +from model_server.base.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file +from model_server import Model +from model_server.base.process import rescale +from model_server.base.workflows import Timer def get_zmask_meta( input_file_path: str, diff --git a/extensions/chaeo/zmask.py b/model_server/extensions/chaeo/zmask.py similarity index 99% rename from extensions/chaeo/zmask.py rename to model_server/extensions/chaeo/zmask.py index e9967e70630820d876d49a0b21a2bbe39d2cf082..1f74b5632d96eeb80f4def92f3b81d111b7060df 100644 --- a/extensions/chaeo/zmask.py +++ b/model_server/extensions/chaeo/zmask.py @@ -5,7 +5,7 @@ from skimage.measure import find_contours, label, regionprops_table from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression -from model_server.accessors import GenericImageDataAccessor +from model_server.base.accessors import GenericImageDataAccessor def build_zmask_from_object_mask( obmask: GenericImageDataAccessor, diff --git a/extensions/ilastik/examples/__init__.py b/model_server/extensions/ilastik/__init__.py similarity index 100% rename from extensions/ilastik/examples/__init__.py rename to model_server/extensions/ilastik/__init__.py diff --git a/extensions/ilastik/conf.py b/model_server/extensions/ilastik/conf.py similarity index 100% rename from extensions/ilastik/conf.py rename to model_server/extensions/ilastik/conf.py diff --git a/extensions/ilastik/tests/__init__.py b/model_server/extensions/ilastik/examples/__init__.py similarity index 100% rename from extensions/ilastik/tests/__init__.py rename to model_server/extensions/ilastik/examples/__init__.py diff --git a/extensions/ilastik/examples/ilastik3d.py b/model_server/extensions/ilastik/examples/ilastik3d.py similarity index 100% rename from extensions/ilastik/examples/ilastik3d.py rename to model_server/extensions/ilastik/examples/ilastik3d.py diff --git a/extensions/ilastik/models.py b/model_server/extensions/ilastik/models.py similarity index 94% rename from extensions/ilastik/models.py rename to model_server/extensions/ilastik/models.py index 1413456f633d188ad646376605749861ba904066..6b55c4cdd14e11335b479ea5f8c6551c0c7c92e1 100644 --- a/extensions/ilastik/models.py +++ b/model_server/extensions/ilastik/models.py @@ -4,9 +4,9 @@ from pathlib import Path import numpy as np import vigra -import extensions.ilastik.conf -from model_server.accessors import GenericImageDataAccessor, InMemoryDataAccessor -from model_server.models import ImageToImageModel, ParameterExpectedError +import model_server.extensions.ilastik.conf +from model_server.base.accessors import GenericImageDataAccessor, InMemoryDataAccessor +from model_server.base.models import ImageToImageModel, ParameterExpectedError class IlastikImageToImageModel(ImageToImageModel): @@ -17,7 +17,7 @@ class IlastikImageToImageModel(ImageToImageModel): if self.project_file.is_absolute(): pap = self.project_file else: - pap = extensions.ilastik.conf.paths['project_files'] / self.project_file + pap = model_server.extensions.ilastik.conf.paths['project_files'] / self.project_file self.project_file_abspath = pap if not pap.exists(): raise FileNotFoundError(f'Project file does not exist: {pap}') diff --git a/extensions/ilastik/router.py b/model_server/extensions/ilastik/router.py similarity index 89% rename from extensions/ilastik/router.py rename to model_server/extensions/ilastik/router.py index 14ec32587349f33476bc62f7e37ba6d31e49445d..074e4f1441d8ddde1d583cc2a0ab6e6d82250341 100644 --- a/extensions/ilastik/router.py +++ b/model_server/extensions/ilastik/router.py @@ -1,11 +1,11 @@ from fastapi import APIRouter, HTTPException -from model_server.session import Session -from model_server.validators import validate_workflow_inputs +from model_server.base.session import Session +from model_server.base.validators import validate_workflow_inputs -from extensions.ilastik import models as ilm -from model_server.models import ParameterExpectedError -from extensions.ilastik.workflows import infer_px_then_ob_model +from model_server.extensions.ilastik import models as ilm +from model_server import ParameterExpectedError +from model_server.extensions.ilastik.workflows import infer_px_then_ob_model router = APIRouter( prefix='/ilastik', diff --git a/model_server/extensions/ilastik/tests/__init__.py b/model_server/extensions/ilastik/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/extensions/ilastik/tests/test_ilastik.py b/model_server/extensions/ilastik/tests/test_ilastik.py similarity index 96% rename from extensions/ilastik/tests/test_ilastik.py rename to model_server/extensions/ilastik/tests/test_ilastik.py index 79cbe3b49630468c8c97558e22923cd522b26cf3..d9e8c429a5f65805ca8bb2edacee035db5ff4b43 100644 --- a/extensions/ilastik/tests/test_ilastik.py +++ b/model_server/extensions/ilastik/tests/test_ilastik.py @@ -4,10 +4,10 @@ import unittest import numpy as np -from conf.testing import czifile, ilastik_classifiers, output_path -from model_server.accessors import CziImageFileAccessor, InMemoryDataAccessor, write_accessor_data_to_file -from extensions.ilastik import models as ilm -from model_server.workflows import infer_image_to_image +from model_server.conf.testing import czifile, ilastik_classifiers, output_path +from model_server.base.accessors import CziImageFileAccessor, InMemoryDataAccessor, write_accessor_data_to_file +from model_server.extensions.ilastik import models as ilm +from model_server.base.workflows import infer_image_to_image from tests.test_api import TestServerBaseClass class TestIlastikPixelClassification(unittest.TestCase): diff --git a/extensions/ilastik/validators.py b/model_server/extensions/ilastik/validators.py similarity index 55% rename from extensions/ilastik/validators.py rename to model_server/extensions/ilastik/validators.py index d82e24a8f3ccbc03afa82536f7c04b6729ca918a..28d92c15b79bf923b1cb4098bfc688e47d7b3896 100644 --- a/extensions/ilastik/validators.py +++ b/model_server/extensions/ilastik/validators.py @@ -1,4 +1,4 @@ -from model_server.accessors import GenericImageDataAccessor +from model_server.base.accessors import GenericImageDataAccessor def is_object_map(img: GenericImageDataAccessor): # TODO: implement diff --git a/extensions/ilastik/workflows.py b/model_server/extensions/ilastik/workflows.py similarity index 89% rename from extensions/ilastik/workflows.py rename to model_server/extensions/ilastik/workflows.py index 1f622b676d30f8df6b019974fd4a22c3758a4f07..aed4b8f24e47e995c8dc9ed4377a305cc355dbc7 100644 --- a/extensions/ilastik/workflows.py +++ b/model_server/extensions/ilastik/workflows.py @@ -4,9 +4,9 @@ Implementation of image analysis work behind API endpoints, without knowledge of from pathlib import Path from typing import Dict -from extensions.ilastik.models import IlastikPixelClassifierModel, IlastikObjectClassifierFromPixelPredictionsModel -from model_server.accessors import generate_file_accessor, write_accessor_data_to_file -from model_server.workflows import Timer +from model_server.extensions.ilastik.models import IlastikPixelClassifierModel, IlastikObjectClassifierFromPixelPredictionsModel +from model_server.base.accessors import generate_file_accessor, write_accessor_data_to_file +from model_server.base.workflows import Timer from pydantic import BaseModel diff --git a/model_server/scripts/__init__.py b/model_server/scripts/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/scripts/run_server.py b/model_server/scripts/run_server.py similarity index 96% rename from scripts/run_server.py rename to model_server/scripts/run_server.py index 222e8fd0a35fa75734e9b0d851b11eb063a5a08f..b278252bfb9c82a54ea69b491e4893d4471cf510 100644 --- a/scripts/run_server.py +++ b/model_server/scripts/run_server.py @@ -4,7 +4,7 @@ import requests import uvicorn import webbrowser -from conf.defaults import server_conf +from model_server.conf.defaults import server_conf def parse_args(): parser = argparse.ArgumentParser( diff --git a/tests/test_api.py b/tests/test_api.py index e6c0f7997ea1a6396d30530d964f40cb7213fbe6..46bfbe235e24615081aad39ebca2b67079a32de4 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -3,8 +3,8 @@ from pathlib import Path import requests import unittest -from conf.testing import czifile -from model_server.models import DummyImageToImageModel +from model_server.conf.testing import czifile + class TestServerBaseClass(unittest.TestCase): def setUp(self) -> None: @@ -14,7 +14,7 @@ class TestServerBaseClass(unittest.TestCase): self.server_process = Process( target=uvicorn.run, - args=('model_server.api:app', ), + args=('base.api:app', ), kwargs={'host': host, 'port': port, 'log_level': 'debug'}, daemon=True ) @@ -48,12 +48,12 @@ class TestApiFromAutomatedClient(TestServerBaseClass): self.assertEqual(resp.json()['params']['par2'], None, resp.json()) def test_default_session_paths(self): - import conf.defaults + import model_server.conf.defaults resp = requests.get(self.uri + 'paths') - conf_root = conf.defaults.root + conf_root = model_server.conf.defaults.root for p in ['inbound_images', 'outbound_images', 'logs']: self.assertTrue(resp.json()[p].startswith(conf_root.__str__())) - suffix = Path(conf.defaults.subdirectories[p]).__str__() + suffix = Path(model_server.conf.defaults.subdirectories[p]).__str__() self.assertTrue(resp.json()[p].endswith(suffix)) def test_list_empty_loaded_models(self): diff --git a/tests/test_model.py b/tests/test_model.py index 661aeadf93825afc430e55f56326def0fe3f43b0..1938e80c26f32e0ffccd00a8dd6f8b028d692dd2 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,7 +1,7 @@ import unittest -from conf.testing import czifile -from model_server.accessors import CziImageFileAccessor -from model_server.models import DummyImageToImageModel, CouldNotLoadModelError +from model_server.conf.testing import czifile +from model_server.base.accessors import CziImageFileAccessor +from model_server.base.models import DummyImageToImageModel, CouldNotLoadModelError class TestCziImageFileAccess(unittest.TestCase): def setUp(self) -> None: diff --git a/tests/test_process.py b/tests/test_process.py index bef8426e5fbd60bf9c10d04c381be2207c1620b4..6908e9d7c1b779065d4de226b7a203979570fb9a 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -2,7 +2,7 @@ import unittest import numpy as np -from model_server.process import pad +from model_server.base.process import pad class TestProcessingUtilityMethods(unittest.TestCase): def setUp(self) -> None: diff --git a/tests/test_session.py b/tests/test_session.py index e3c9319205e183e1a3e1d9335a759e4bab42e3a9..dd143d5f48e6eec0057fca012a7e8e555139e016 100644 --- a/tests/test_session.py +++ b/tests/test_session.py @@ -1,7 +1,7 @@ import pathlib import unittest -from model_server.models import DummyImageToImageModel -from model_server.session import Session +from model_server.base.models import DummyImageToImageModel +from model_server.base.session import Session class TestGetSessionObject(unittest.TestCase): def setUp(self) -> None: @@ -16,7 +16,7 @@ class TestGetSessionObject(unittest.TestCase): self.assertTrue(exists(sesh.manifest_json), 'Session did not create a manifest JSON file in the correct place') def test_changing_session_root_creates_new_directory(self): - from conf.defaults import root + from model_server.conf.defaults import root from shutil import rmtree sesh = Session() @@ -46,7 +46,7 @@ class TestGetSessionObject(unittest.TestCase): def test_session_records_workflow(self): import json - from model_server.workflows import WorkflowRunRecord + from model_server.base.workflows import WorkflowRunRecord sesh = Session() di = WorkflowRunRecord( model_id='test_model', diff --git a/tests/test_workflow.py b/tests/test_workflow.py index 2cab499d04c222651894d9064c1f7f990050d626..3c7c02a61d6d73fdfa2167c8d973af35c069a366 100644 --- a/tests/test_workflow.py +++ b/tests/test_workflow.py @@ -1,8 +1,8 @@ import unittest -from conf.testing import czifile, output_path -from model_server.models import DummyImageToImageModel -from model_server.workflows import infer_image_to_image +from model_server.conf.testing import czifile, output_path +from model_server.base.models import DummyImageToImageModel +from model_server.base.workflows import infer_image_to_image class TestGetSessionObject(unittest.TestCase):