bioimageio.spec.dataset.v0_3

  1from typing import TYPE_CHECKING, Any, ClassVar, Dict, Literal, Optional, cast
  2
  3from pydantic import model_validator
  4
  5from .._internal.common_nodes import InvalidDescr
  6from .._internal.io import FileDescr as FileDescr
  7from .._internal.io_basics import Sha256 as Sha256
  8from .._internal.url import HttpUrl as HttpUrl
  9from ..generic.v0_3 import VALID_COVER_IMAGE_EXTENSIONS as VALID_COVER_IMAGE_EXTENSIONS
 10from ..generic.v0_3 import Author as Author
 11from ..generic.v0_3 import BadgeDescr as BadgeDescr
 12from ..generic.v0_3 import BioimageioConfig as BioimageioConfig
 13from ..generic.v0_3 import CiteEntry as CiteEntry
 14from ..generic.v0_3 import Config as Config
 15from ..generic.v0_3 import DeprecatedLicenseId as DeprecatedLicenseId
 16from ..generic.v0_3 import Doi as Doi
 17from ..generic.v0_3 import (
 18    GenericDescrBase,
 19    LinkedResourceBase,
 20    _author_conv,  # pyright: ignore[reportPrivateUsage]
 21    _maintainer_conv,  # pyright: ignore[reportPrivateUsage]
 22)
 23from ..generic.v0_3 import LicenseId as LicenseId
 24from ..generic.v0_3 import LinkedResource as LinkedResource
 25from ..generic.v0_3 import Maintainer as Maintainer
 26from ..generic.v0_3 import OrcidId as OrcidId
 27from ..generic.v0_3 import RelativeFilePath as RelativeFilePath
 28from ..generic.v0_3 import ResourceId as ResourceId
 29from ..generic.v0_3 import Uploader as Uploader
 30from ..generic.v0_3 import Version as Version
 31from .v0_2 import DatasetDescr as DatasetDescr02
 32
 33
 34class DatasetId(ResourceId):
 35    pass
 36
 37
 38class DatasetDescr(GenericDescrBase):
 39    """A bioimage.io dataset resource description file (dataset RDF) describes a dataset relevant to bioimage
 40    processing.
 41    """
 42
 43    implemented_type: ClassVar[Literal["dataset"]] = "dataset"
 44    if TYPE_CHECKING:
 45        type: Literal["dataset"] = "dataset"
 46    else:
 47        type: Literal["dataset"]
 48
 49    id: Optional[DatasetId] = None
 50    """bioimage.io-wide unique resource identifier
 51    assigned by bioimage.io; version **un**specific."""
 52
 53    parent: Optional[DatasetId] = None
 54    """The description from which this one is derived"""
 55
 56    source: Optional[HttpUrl] = None
 57    """"URL to the source of the dataset."""
 58
 59    @model_validator(mode="before")
 60    @classmethod
 61    def _convert(cls, data: Dict[str, Any], /) -> Dict[str, Any]:
 62        if (
 63            data.get("type") == "dataset"
 64            and isinstance(fv := data.get("format_version"), str)
 65            and fv.startswith("0.2.")
 66        ):
 67            old = DatasetDescr02.load(data)
 68            if isinstance(old, InvalidDescr):
 69                return data
 70
 71            return cast(
 72                Dict[str, Any],
 73                (cls if TYPE_CHECKING else dict)(
 74                    attachments=(
 75                        []
 76                        if old.attachments is None
 77                        else [FileDescr(source=f) for f in old.attachments.files]
 78                    ),
 79                    authors=[
 80                        _author_conv.convert_as_dict(a) for a in old.authors
 81                    ],  # pyright: ignore[reportArgumentType]
 82                    badges=old.badges,
 83                    cite=[
 84                        {"text": c.text, "doi": c.doi, "url": c.url} for c in old.cite
 85                    ],  # pyright: ignore[reportArgumentType]
 86                    config=old.config,  # pyright: ignore[reportArgumentType]
 87                    covers=old.covers,
 88                    description=old.description,
 89                    documentation=old.documentation,
 90                    format_version="0.3.0",
 91                    git_repo=old.git_repo,  # pyright: ignore[reportArgumentType]
 92                    icon=old.icon,
 93                    id=None if old.id is None else DatasetId(old.id),
 94                    license=old.license,  # type: ignore
 95                    links=old.links,
 96                    maintainers=[
 97                        _maintainer_conv.convert_as_dict(m) for m in old.maintainers
 98                    ],  # pyright: ignore[reportArgumentType]
 99                    name=old.name,
100                    source=old.source,
101                    tags=old.tags,
102                    type=old.type,
103                    uploader=old.uploader,
104                    version=old.version,
105                    **(old.model_extra or {}),
106                ),
107            )
108
109        return data
110
111
112class LinkedDataset(LinkedResourceBase):
113    """Reference to a bioimage.io dataset."""
114
115    id: DatasetId
116    """A valid dataset `id` from the bioimage.io collection."""
class DatasetId(bioimageio.spec.generic.v0_3.ResourceId):
35class DatasetId(ResourceId):
36    pass

str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.

class DatasetDescr(bioimageio.spec.generic.v0_3.GenericDescrBase):
 39class DatasetDescr(GenericDescrBase):
 40    """A bioimage.io dataset resource description file (dataset RDF) describes a dataset relevant to bioimage
 41    processing.
 42    """
 43
 44    implemented_type: ClassVar[Literal["dataset"]] = "dataset"
 45    if TYPE_CHECKING:
 46        type: Literal["dataset"] = "dataset"
 47    else:
 48        type: Literal["dataset"]
 49
 50    id: Optional[DatasetId] = None
 51    """bioimage.io-wide unique resource identifier
 52    assigned by bioimage.io; version **un**specific."""
 53
 54    parent: Optional[DatasetId] = None
 55    """The description from which this one is derived"""
 56
 57    source: Optional[HttpUrl] = None
 58    """"URL to the source of the dataset."""
 59
 60    @model_validator(mode="before")
 61    @classmethod
 62    def _convert(cls, data: Dict[str, Any], /) -> Dict[str, Any]:
 63        if (
 64            data.get("type") == "dataset"
 65            and isinstance(fv := data.get("format_version"), str)
 66            and fv.startswith("0.2.")
 67        ):
 68            old = DatasetDescr02.load(data)
 69            if isinstance(old, InvalidDescr):
 70                return data
 71
 72            return cast(
 73                Dict[str, Any],
 74                (cls if TYPE_CHECKING else dict)(
 75                    attachments=(
 76                        []
 77                        if old.attachments is None
 78                        else [FileDescr(source=f) for f in old.attachments.files]
 79                    ),
 80                    authors=[
 81                        _author_conv.convert_as_dict(a) for a in old.authors
 82                    ],  # pyright: ignore[reportArgumentType]
 83                    badges=old.badges,
 84                    cite=[
 85                        {"text": c.text, "doi": c.doi, "url": c.url} for c in old.cite
 86                    ],  # pyright: ignore[reportArgumentType]
 87                    config=old.config,  # pyright: ignore[reportArgumentType]
 88                    covers=old.covers,
 89                    description=old.description,
 90                    documentation=old.documentation,
 91                    format_version="0.3.0",
 92                    git_repo=old.git_repo,  # pyright: ignore[reportArgumentType]
 93                    icon=old.icon,
 94                    id=None if old.id is None else DatasetId(old.id),
 95                    license=old.license,  # type: ignore
 96                    links=old.links,
 97                    maintainers=[
 98                        _maintainer_conv.convert_as_dict(m) for m in old.maintainers
 99                    ],  # pyright: ignore[reportArgumentType]
100                    name=old.name,
101                    source=old.source,
102                    tags=old.tags,
103                    type=old.type,
104                    uploader=old.uploader,
105                    version=old.version,
106                    **(old.model_extra or {}),
107                ),
108            )
109
110        return data

A bioimage.io dataset resource description file (dataset RDF) describes a dataset relevant to bioimage processing.

implemented_type: ClassVar[Literal['dataset']] = 'dataset'
id: Optional[DatasetId]

bioimage.io-wide unique resource identifier assigned by bioimage.io; version unspecific.

parent: Optional[DatasetId]

The description from which this one is derived

"URL to the source of the dataset.

implemented_format_version_tuple: ClassVar[Tuple[int, int, int]] = (0, 3, 0)
model_config: ClassVar[pydantic.config.ConfigDict] = {'extra': 'forbid', 'frozen': False, 'populate_by_name': True, 'revalidate_instances': 'never', 'validate_assignment': True, 'validate_default': False, 'validate_return': True, 'use_attribute_docstrings': True, 'model_title_generator': <function _node_title_generator>, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

def model_post_init(self: pydantic.main.BaseModel, context: Any, /) -> None:
337def init_private_attributes(self: BaseModel, context: Any, /) -> None:
338    """This function is meant to behave like a BaseModel method to initialise private attributes.
339
340    It takes context as an argument since that's what pydantic-core passes when calling it.
341
342    Args:
343        self: The BaseModel instance.
344        context: The context.
345    """
346    if getattr(self, '__pydantic_private__', None) is None:
347        pydantic_private = {}
348        for name, private_attr in self.__private_attributes__.items():
349            default = private_attr.get_default()
350            if default is not PydanticUndefined:
351                pydantic_private[name] = default
352        object_setattr(self, '__pydantic_private__', pydantic_private)

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that's what pydantic-core passes when calling it.

Arguments:
  • self: The BaseModel instance.
  • context: The context.
class LinkedDataset(bioimageio.spec.generic.v0_3.LinkedResourceBase):
113class LinkedDataset(LinkedResourceBase):
114    """Reference to a bioimage.io dataset."""
115
116    id: DatasetId
117    """A valid dataset `id` from the bioimage.io collection."""

Reference to a bioimage.io dataset.

id: DatasetId

A valid dataset id from the bioimage.io collection.

model_config: ClassVar[pydantic.config.ConfigDict] = {'extra': 'forbid', 'frozen': False, 'populate_by_name': True, 'revalidate_instances': 'never', 'validate_assignment': True, 'validate_default': False, 'validate_return': True, 'use_attribute_docstrings': True, 'model_title_generator': <function _node_title_generator>, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].