diff --git a/src/ome_types/_mixins/_base_type.py b/src/ome_types/_mixins/_base_type.py index 3c11012a..a6bb9e88 100644 --- a/src/ome_types/_mixins/_base_type.py +++ b/src/ome_types/_mixins/_base_type.py @@ -156,8 +156,7 @@ def __getattr__(self, key: str) -> Any: stacklevel=2, ) return getattr(self, new_key) - - return super().__getattr__(key) # type: ignore + return object.__getattribute__(self, key) def to_xml(self, **kwargs: Any) -> str: """Serialize this object to XML. diff --git a/src/ome_types/_mixins/_collections.py b/src/ome_types/_mixins/_collections.py index 99ff7bd2..6769205d 100644 --- a/src/ome_types/_mixins/_collections.py +++ b/src/ome_types/_mixins/_collections.py @@ -105,8 +105,18 @@ def _field_name(cls, item: Any) -> str: raise TypeError( # pragma: no cover f"Expected an instance of {AnnotationInstances}, got {item!r}" ) + + item_type = type(item) # where 10 is the length of "Annotation" - return item.__class__.__name__[:-10].lower() + "_annotations" + field_name = item_type.__name__[:-10].lower() + "_annotations" + if hasattr(cls, field_name): + return field_name + for annotation_type in AnnotationInstances: + if issubclass(item_type, annotation_type): + return annotation_type.__name__[:-10].lower() + "_annotations" + raise TypeError( # pragma: no cover + f"Could not find field name for {item_type.__name__}" + ) ShapeType = Union[Rectangle, Mask, Point, Ellipse, Line, Polyline, Polygon, Label] diff --git a/src/ome_types/model/modulo.py b/src/ome_types/model/modulo.py new file mode 100644 index 00000000..548be194 --- /dev/null +++ b/src/ome_types/model/modulo.py @@ -0,0 +1,145 @@ +from enum import Enum +from typing import List, Optional, Union + +from pydantic_compat import model_validator + +from ome_types._autogenerated.ome_2016_06 import XMLAnnotation +from ome_types._mixins._base_type import OMEType +from xsdata_pydantic_basemodel.pydantic_compat import Field + +MODULO_NS = "openmicroscopy.org/omero/dimension/modulo" +ADDITIONS_NS = "http://www.openmicroscopy.org/Schemas/Additions/2011-09" + + +class ModuloType(Enum): + """The dimension represented by this modulo.""" + + ANGLE = "angle" + PHASE = "phase" + TILE = "tile" + LIFETIME = "lifetime" + LAMBDA = "lambda" + OTHER = "other" + + +class Label(OMEType): + value: int = Field( + metadata={ + "required": True, + "format": "base64", + } + ) + + +class Modulo(OMEType): + class Meta: + namespace = MODULO_NS + + type: ModuloType = Field( + metadata={ + "name": "Type", + "type": "Attribute", + "required": True, + }, + ) + labels: List[Label] = Field( + default_factory=list, + metadata={ + "name": "Label", + "type": "Element", + }, + ) + type_description: Optional[str] = Field( + default=None, + metadata={ + "name": "TypeDescription", + "type": "Attribute", + }, + ) + unit: Optional[str] = Field( + default=None, + metadata={ + "name": "Unit", + "type": "Attribute", + }, + ) + start: Union[int, float, None] = Field( + default=None, + metadata={ + "name": "Start", + "type": "Attribute", + }, + ) + step: Union[int, float, None] = Field( + default=None, + metadata={ + "name": "Step", + "type": "Attribute", + }, + ) + end: Union[int, float, None] = Field( + default=None, + metadata={ + "name": "End", + "type": "Attribute", + }, + ) + + @model_validator(mode="after") + def _vroot(cls, v: "Modulo") -> "Modulo": + if not v.labels and (v.start is None or v.end is None): + raise ValueError("Must specify either labels or start/end") + return v + + +class ModuloContainer(OMEType): + class Meta: + namespace = ADDITIONS_NS + + modulo_along_c: Optional[Modulo] = Field( + default=None, + metadata={ + "type": "Element", + "name": "ModuloAlongC", + }, + ) + modulo_along_z: Optional[Modulo] = Field( + default=None, + metadata={ + "type": "Element", + "name": "ModuloAlongZ", + }, + ) + modulo_along_t: Optional[Modulo] = Field( + default=None, + metadata={ + "type": "Element", + "name": "ModuloAlongT", + }, + ) + + +class ModuloValue(XMLAnnotation.Value): + class Meta: + namespace = "http://www.openmicroscopy.org/Schemas/OME/2016-06" + + modulos: ModuloContainer = Field( + default_factory=list, + metadata={ + "name": "Modulo", + "type": "Element", + }, + ) + + +class ModuloAnnotation(XMLAnnotation): + class Meta: + namespace = MODULO_NS + + value: ModuloValue = Field( + default_factory=ModuloValue, + metadata={ + "name": "Value", + "type": "Element", + }, + ) diff --git a/tests/data/FLIM-ModuloAlongC.ome.xml b/tests/data/FLIM-ModuloAlongC.ome.xml new file mode 100644 index 00000000..b4274962 --- /dev/null +++ b/tests/data/FLIM-ModuloAlongC.ome.xml @@ -0,0 +1,3 @@ +2011-10-03T14:34:07urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822urn:uuid:51fb5d8e-7ae1-437f-96bc-ed67b8d14822 + + \ No newline at end of file diff --git a/tests/data/FLIM-ModuloAlongT-TSCPC.ome.xml b/tests/data/FLIM-ModuloAlongT-TSCPC.ome.xml new file mode 100644 index 00000000..c44bca2d --- /dev/null +++ b/tests/data/FLIM-ModuloAlongT-TSCPC.ome.xml @@ -0,0 +1,6 @@ +2013-07-11T15:56:06urn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eurn:uuid:4bd6aecd-1da8-47b3-8271-b02240bfcd1eFor a description of how 6D, 7D, and 8D data is stored + using the Modulo extension see + http://www.openmicroscopy.org/site/support/ome-model/developers/6d-7d-and-8d-storage.html + + + \ No newline at end of file diff --git a/tests/data/LAMBDA-ModuloAlongZ-ModuloAlongT.ome.xml b/tests/data/LAMBDA-ModuloAlongZ-ModuloAlongT.ome.xml new file mode 100644 index 00000000..5bf88012 --- /dev/null +++ b/tests/data/LAMBDA-ModuloAlongZ-ModuloAlongT.ome.xml @@ -0,0 +1,15 @@ +2011-09-16T10:45:48urn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafburn:uuid:e4249d03-da06-4442-b365-6511cfbddafb + + + + \ No newline at end of file diff --git a/tests/data/SPIM-ModuloAlongZ.ome.xml b/tests/data/SPIM-ModuloAlongZ.ome.xml new file mode 100644 index 00000000..99cfee90 --- /dev/null +++ b/tests/data/SPIM-ModuloAlongZ.ome.xml @@ -0,0 +1,9 @@ +2011-08-30T16:06:00urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2urn:uuid:37d77e32-0ee2-4278-8456-f876332f9df2 + + + + \ No newline at end of file diff --git a/tests/data/modulo.ome.xml b/tests/data/modulo.ome.xml new file mode 100644 index 00000000..d771676e --- /dev/null +++ b/tests/data/modulo.ome.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + For a description of how 6D, 7D, and 8D data is stored + using the Modulo extension see + http://www.openmicroscopy.org/site/support/ome-model/developers/6d-7d-and-8d-storage.html + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/x.py b/x.py new file mode 100644 index 00000000..54cb0674 --- /dev/null +++ b/x.py @@ -0,0 +1,11 @@ +from ome_types.model import OME, modulo + +m = modulo.ModuloAnnotation() +m.value.modulos.modulo_along_c = modulo.Modulo( + type=modulo.ModuloType.ANGLE, start=0, end=360 +) + +ome = OME() +ome.structured_annotations.append(m) + +print(ome.to_xml())