path-foundation-demo / data_models /embedding_request.py
lirony's picture
initial
a3e8b4b
raw
history blame
3.03 kB
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Request dataclasses for Pete."""
import dataclasses
import enum
from typing import Any, List, Mapping, Union
from data_models import patch_coordinate
class ModelSize(enum.Enum):
UNDEFINED = 0
SMALL = 1 # ~1M parameters
MEDIUM = 2 # ~20M parameters.
LARGE = 3 # ~100M parameters.
class ModelKind(enum.Enum):
UNDEFINED = 0
# Best suited for high magnification images.
# Pixel spacings of .002mm, .001mm, .0005mm or 5x, 10x, 20x.
LOW_PIXEL_SPACING = 1
# Best suited for low magnification images.
# Pixel spacings of .004mm, .008mm, .016mm, 5x_div_2, 5x_div4, 5x_div8.
HIGH_PIXEL_SPACING = 2
@dataclasses.dataclass(frozen=True)
class EmbeddingInstanceV1:
"""An instance in a DICOM Embedding Request as described in the schema file."""
dicom_web_store_url: str
dicom_study_uid: str
dicom_series_uid: str
bearer_token: str
ez_wsi_state: Union[str, Mapping[str, Any]]
instance_uids: List[str]
patch_coordinates: List[patch_coordinate.PatchCoordinate]
@dataclasses.dataclass(frozen=True)
class DicomImageV2:
"""An instance in a DICOM Embedding Request as described in the schema file."""
series_path: str
bearer_token: str
extensions: Mapping[str, Any]
instance_uids: List[str]
patch_coordinates: List[patch_coordinate.PatchCoordinate]
@dataclasses.dataclass(frozen=True)
class GcsImageV2:
"""An instance in a DICOM Embedding Request as described in the schema file."""
image_file_uri: str
bearer_token: str
extensions: Mapping[str, Any]
patch_coordinates: List[patch_coordinate.PatchCoordinate]
@dataclasses.dataclass(frozen=True)
class EmbeddedImageV2:
"""An instance in a DICOM Embedding Request as described in the schema file."""
image_bytes: str
extensions: Mapping[str, Any]
patch_coordinates: List[patch_coordinate.PatchCoordinate]
EmbeddingInstanceV2 = Union[DicomImageV2, GcsImageV2, EmbeddedImageV2]
@dataclasses.dataclass(frozen=True)
class EmbeddingParameters:
"""A prediction in a DICOM Embedding Request as described in the schema file."""
model_size: str
model_kind: str
@dataclasses.dataclass(frozen=True)
class EmbeddingRequestV1:
"""A DICOM Embedding Request is a single parameter and list of instances."""
parameters: EmbeddingParameters
instances: List[EmbeddingInstanceV1]
@dataclasses.dataclass(frozen=True)
class EmbeddingRequestV2:
"""A DICOM Embedding Request is a list of instances."""
instances: List[EmbeddingInstanceV2]