diff --git a/omero_marshal/__init__.py b/omero_marshal/__init__.py index ef5650f3..825ed46d 100644 --- a/omero_marshal/__init__.py +++ b/omero_marshal/__init__.py @@ -38,6 +38,7 @@ def get_encoder(t): def get_decoder(t): + t = get_full_type(t) try: return DECODERS[t] except KeyError: @@ -77,6 +78,15 @@ def get_schema_version(version): SPW_SCHEMA_URL = '%s/%s/%s' % (BASE_URL, SPW_NS, SCHEMA_VERSION) +def get_full_type(t): + if t.startswith("http"): + return t + elif t.startswith("omero:"): + return '%s/OMERO/%s#%s' % (BASE_URL, SCHEMA_VERSION, t[6:]) + else: + return '%s/OME/%s#%s' % (BASE_URL, SCHEMA_VERSION, t) + + class MarshallingCtx(object): def __init__(self, encoders, decoders): @@ -91,6 +101,7 @@ def get_encoder(self, t): return None def get_decoder(self, t): + t = get_full_type(t) try: return self.decoders[t] except KeyError: diff --git a/omero_marshal/decode/__init__.py b/omero_marshal/decode/__init__.py index 5db1d837..cc9bbe86 100644 --- a/omero_marshal/decode/__init__.py +++ b/omero_marshal/decode/__init__.py @@ -30,6 +30,8 @@ def to_unit(self, v): if v is None: return None unit = v['@type'][v['@type'].rfind('#') + 1:] + if unit.startswith("omero:"): + unit = unit[6:] unit = getattr(omero.model, unit) return unit( float(v['Value']), diff --git a/omero_marshal/decode/decoders/acquisitionmode.py b/omero_marshal/decode/decoders/acquisitionmode.py index e4b39266..55013594 100644 --- a/omero_marshal/decode/decoders/acquisitionmode.py +++ b/omero_marshal/decode/decoders/acquisitionmode.py @@ -15,7 +15,7 @@ class AcquisitionModeDecoder(EnumDecoder): - TYPE = 'TBD#AcquisitionMode' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#AcquisitionMode' OMERO_CLASS = AcquisitionModeI diff --git a/omero_marshal/decode/decoders/checksum_algorithm.py b/omero_marshal/decode/decoders/checksum_algorithm.py index 5dcd3984..63d6747d 100644 --- a/omero_marshal/decode/decoders/checksum_algorithm.py +++ b/omero_marshal/decode/decoders/checksum_algorithm.py @@ -15,7 +15,8 @@ class ChecksumAlgorithmDecoder(EnumDecoder): - TYPE = 'TBD#ChecksumAlgorithm' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#' \ + 'ChecksumAlgorithm' OMERO_CLASS = ChecksumAlgorithmI diff --git a/omero_marshal/decode/decoders/contrastmethod.py b/omero_marshal/decode/decoders/contrastmethod.py index de437336..9920b75e 100644 --- a/omero_marshal/decode/decoders/contrastmethod.py +++ b/omero_marshal/decode/decoders/contrastmethod.py @@ -15,7 +15,7 @@ class ContrastMethodDecoder(EnumDecoder): - TYPE = 'TBD#ContrastMethod' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ContrastMethod' OMERO_CLASS = ContrastMethodI diff --git a/omero_marshal/decode/decoders/details.py b/omero_marshal/decode/decoders/details.py index 8a96a6c7..904e8d21 100644 --- a/omero_marshal/decode/decoders/details.py +++ b/omero_marshal/decode/decoders/details.py @@ -15,7 +15,7 @@ class DetailsDecoder(Decoder): - TYPE = 'TBD#Details' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Details' OMERO_CLASS = DetailsI diff --git a/omero_marshal/decode/decoders/dimensionorder.py b/omero_marshal/decode/decoders/dimensionorder.py index 9f3c0958..39a29d76 100644 --- a/omero_marshal/decode/decoders/dimensionorder.py +++ b/omero_marshal/decode/decoders/dimensionorder.py @@ -15,7 +15,7 @@ class DimensionOrderDecoder(EnumDecoder): - TYPE = 'TBD#DimensionOrder' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#DimensionOrder' OMERO_CLASS = DimensionOrderI diff --git a/omero_marshal/decode/decoders/externalinfo.py b/omero_marshal/decode/decoders/externalinfo.py index 13c334a3..9bca5cb5 100644 --- a/omero_marshal/decode/decoders/externalinfo.py +++ b/omero_marshal/decode/decoders/externalinfo.py @@ -15,7 +15,7 @@ class ExternalInfoDecoder(Decoder): - TYPE = 'TBD#ExternalInfo' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#ExternalInfo' OMERO_CLASS = ExternalInfoI diff --git a/omero_marshal/decode/decoders/format.py b/omero_marshal/decode/decoders/format.py index af133e96..ab651066 100644 --- a/omero_marshal/decode/decoders/format.py +++ b/omero_marshal/decode/decoders/format.py @@ -15,7 +15,7 @@ class FormatDecoder(EnumDecoder): - TYPE = 'TBD#Format' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Format' OMERO_CLASS = FormatI diff --git a/omero_marshal/decode/decoders/illumination.py b/omero_marshal/decode/decoders/illumination.py index f37c15a3..7e5062a1 100644 --- a/omero_marshal/decode/decoders/illumination.py +++ b/omero_marshal/decode/decoders/illumination.py @@ -15,7 +15,7 @@ class IlluminationDecoder(EnumDecoder): - TYPE = 'TBD#Illumination' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#IlluminationType' OMERO_CLASS = IlluminationI diff --git a/omero_marshal/decode/decoders/original_file.py b/omero_marshal/decode/decoders/original_file.py index 164fcd93..a3725bf2 100644 --- a/omero_marshal/decode/decoders/original_file.py +++ b/omero_marshal/decode/decoders/original_file.py @@ -15,7 +15,7 @@ class OriginalFileDecoder(Decoder): - TYPE = 'TBD#OriginalFile' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#OriginalFile' OMERO_CLASS = OriginalFileI diff --git a/omero_marshal/decode/decoders/permissions.py b/omero_marshal/decode/decoders/permissions.py index ea75c5bd..1862b092 100644 --- a/omero_marshal/decode/decoders/permissions.py +++ b/omero_marshal/decode/decoders/permissions.py @@ -15,7 +15,7 @@ class PermissionsDecoder(Decoder): - TYPE = 'TBD#Permissions' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Permissions' OMERO_CLASS = PermissionsI diff --git a/omero_marshal/decode/decoders/photometricinterpretation.py b/omero_marshal/decode/decoders/photometricinterpretation.py index 55fad0ee..d8741dfc 100644 --- a/omero_marshal/decode/decoders/photometricinterpretation.py +++ b/omero_marshal/decode/decoders/photometricinterpretation.py @@ -15,7 +15,8 @@ class PhotometricInterpretationDecoder(EnumDecoder): - TYPE = 'TBD#PhotometricInterpretation' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#' \ + 'PhotometricInterpretation' OMERO_CLASS = PhotometricInterpretationI diff --git a/omero_marshal/decode/decoders/pixelstype.py b/omero_marshal/decode/decoders/pixelstype.py index 2e868f09..d668cf12 100644 --- a/omero_marshal/decode/decoders/pixelstype.py +++ b/omero_marshal/decode/decoders/pixelstype.py @@ -15,7 +15,7 @@ class PixelsTypeDecoder(EnumDecoder): - TYPE = 'TBD#PixelsType' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#PixelType' OMERO_CLASS = PixelsTypeI diff --git a/omero_marshal/encode/__init__.py b/omero_marshal/encode/__init__.py index fd56ad4a..141d9f71 100644 --- a/omero_marshal/encode/__init__.py +++ b/omero_marshal/encode/__init__.py @@ -9,7 +9,6 @@ # jason@glencoesoftware.com. # - # Needed to avoid import errors when this is the first import import omero.all # noqa from omero import RType @@ -17,6 +16,10 @@ from omero.rtypes import unwrap +BASE_CONTEXT = "http://www.openmicroscopy.org/Schemas/OME/2016-06#" +OMERO_CONTEXT = "http://www.openmicroscopy.org/Schemas/OMERO/2016-06#" + + class Encoder(object): TYPE = '' @@ -35,22 +38,39 @@ def set_if_not_none(self, v, key, value): v[key] = value def encode_unit(self, v, key, value): - v[key] = { - '@type': 'TBD#%s' % value.__class__.__name__, - 'Unit': value.getUnit().name, - 'Symbol': value.getSymbol(), - 'Value': value.getValue() - } - - def encode(self, obj): - v = {'@type': self.TYPE} + k = value.__class__.__name__ + if k in ("LengthI", "TimeI"): + v[key] = { + '@type': 'omero:%s' % k, + 'Unit': value.getUnit().name, + 'Symbol': value.getSymbol(), + 'Value': value.getValue() + } + else: + raise Exception("unhandled unit: %s" % k) + + def encode(self, obj, include_context=None): + + if self.TYPE.startswith(BASE_CONTEXT): + v = {'@type': self.TYPE.split('#')[-1]} + elif self.TYPE.startswith(OMERO_CONTEXT): + v = {'@type': "omero:" + self.TYPE.split('#')[-1]} + else: + raise Exception("unknown prefix: %s" % self.TYPE) + + if include_context is None or include_context: + v['@context'] = { + "@vocab": BASE_CONTEXT, + "omero": OMERO_CONTEXT, + } + if hasattr(obj, 'id'): obj_id = unwrap(obj.id) if obj_id is not None: v['@id'] = obj_id if hasattr(obj, 'details') and obj.details is not None: encoder = self.ctx.get_encoder(obj.details.__class__) - v['omero:details'] = encoder.encode(obj.details) + v['omero:details'] = encoder.encode(obj.details, False) return v diff --git a/omero_marshal/encode/encoders/acquisitionmode.py b/omero_marshal/encode/encoders/acquisitionmode.py index a07dcc79..7ca59f9d 100644 --- a/omero_marshal/encode/encoders/acquisitionmode.py +++ b/omero_marshal/encode/encoders/acquisitionmode.py @@ -15,7 +15,7 @@ class AcquisitionModeEncoder(EnumEncoder): - TYPE = 'TBD#AcquisitionMode' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#AcquisitionMode' encoder = (AcquisitionModeI, AcquisitionModeEncoder) diff --git a/omero_marshal/encode/encoders/affinetransform.py b/omero_marshal/encode/encoders/affinetransform.py index 4a1d6a0b..8fd1ce1f 100644 --- a/omero_marshal/encode/encoders/affinetransform.py +++ b/omero_marshal/encode/encoders/affinetransform.py @@ -24,8 +24,9 @@ class AffineTransform201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#AffineTransform' - def encode(self, obj): - v = super(AffineTransform201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(AffineTransform201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'A00', obj.getA00()) self.set_if_not_none(v, 'A10', obj.getA10()) self.set_if_not_none(v, 'A01', obj.getA01()) diff --git a/omero_marshal/encode/encoders/annotation.py b/omero_marshal/encode/encoders/annotation.py index ea49f1f2..92210bb4 100644 --- a/omero_marshal/encode/encoders/annotation.py +++ b/omero_marshal/encode/encoders/annotation.py @@ -47,8 +47,8 @@ class Annotation201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01#Annotation' - def encode(self, obj): - v = super(Annotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Annotation201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Description', obj.description) self.set_if_not_none(v, 'Namespace', obj.ns) return v @@ -63,15 +63,15 @@ class Annotatable201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01#AnnotationRef' - def encode(self, obj): - v = super(Annotatable201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Annotatable201501Encoder, self).encode(obj, include_context) if obj.isAnnotationLinksLoaded() and obj.sizeOfAnnotationLinks() > 0: annotations = list() for annotation_link in obj.copyAnnotationLinks(): annotation = annotation_link.child annotation_encoder = self.ctx.get_encoder(annotation.__class__) annotations.append( - annotation_encoder.encode(annotation) + annotation_encoder.encode(annotation, False) ) v['Annotations'] = annotations return v diff --git a/omero_marshal/encode/encoders/boolean_annotation.py b/omero_marshal/encode/encoders/boolean_annotation.py index 62178921..fe8eda1c 100644 --- a/omero_marshal/encode/encoders/boolean_annotation.py +++ b/omero_marshal/encode/encoders/boolean_annotation.py @@ -19,8 +19,9 @@ class BooleanAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#BooleanAnnotation' - def encode(self, obj): - v = super(BooleanAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(BooleanAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.boolValue) return v diff --git a/omero_marshal/encode/encoders/channel.py b/omero_marshal/encode/encoders/channel.py index 688af775..bcf924be 100644 --- a/omero_marshal/encode/encoders/channel.py +++ b/omero_marshal/encode/encoders/channel.py @@ -18,8 +18,8 @@ class Channel201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Channel' - def encode(self, obj): - v = super(Channel201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Channel201501Encoder, self).encode(obj, include_context) color = self.rgba_to_int(obj.red, obj.green, obj.blue, obj.alpha) self.set_if_not_none(v, 'Color', color) self.set_if_not_none(v, 'omero:lookupTable', obj.lookupTable) @@ -49,19 +49,19 @@ def encode(self, obj): contrast_method_encoder = \ self.ctx.get_encoder(contrast_method.__class__) v['ContrastMethod'] = \ - contrast_method_encoder.encode(contrast_method) + contrast_method_encoder.encode(contrast_method, False) illumination = logical_channel.illumination if illumination is not None and illumination.isLoaded(): illumination_encoder = \ self.ctx.get_encoder(illumination.__class__) v['Illumination'] = \ - illumination_encoder.encode(illumination) + illumination_encoder.encode(illumination, False) acquisition_mode = logical_channel.mode if acquisition_mode is not None and acquisition_mode.isLoaded(): acquisition_mode_encoder = \ self.ctx.get_encoder(acquisition_mode.__class__) v['AcquisitionMode'] = \ - acquisition_mode_encoder.encode(acquisition_mode) + acquisition_mode_encoder.encode(acquisition_mode, False) photometric_interpretation = \ logical_channel.photometricInterpretation if photometric_interpretation is not None \ @@ -70,7 +70,7 @@ def encode(self, obj): self.ctx.get_encoder(photometric_interpretation.__class__) v['omero:photometricInterpretation'] = \ photometric_interpretation_encoder.encode( - photometric_interpretation + photometric_interpretation, False ) return v diff --git a/omero_marshal/encode/encoders/checksum_algorithm.py b/omero_marshal/encode/encoders/checksum_algorithm.py index d9c07e9a..eac65473 100644 --- a/omero_marshal/encode/encoders/checksum_algorithm.py +++ b/omero_marshal/encode/encoders/checksum_algorithm.py @@ -15,7 +15,8 @@ class ChecksumAlgorithmEncoder(EnumEncoder): - TYPE = 'TBD#ChecksumAlgorithm' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#' \ + 'ChecksumAlgorithm' encoder = (ChecksumAlgorithmI, ChecksumAlgorithmEncoder) diff --git a/omero_marshal/encode/encoders/comment_annotation.py b/omero_marshal/encode/encoders/comment_annotation.py index e4afeaa5..83bf3d37 100644 --- a/omero_marshal/encode/encoders/comment_annotation.py +++ b/omero_marshal/encode/encoders/comment_annotation.py @@ -19,8 +19,9 @@ class CommentAnnotation201501Encoder(TextAnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#CommentAnnotation' - def encode(self, obj): - v = super(CommentAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(CommentAnnotation201501Encoder, self).encode( + obj, include_context) return v diff --git a/omero_marshal/encode/encoders/contrastmethod.py b/omero_marshal/encode/encoders/contrastmethod.py index d0b0a76c..301d3ee4 100644 --- a/omero_marshal/encode/encoders/contrastmethod.py +++ b/omero_marshal/encode/encoders/contrastmethod.py @@ -15,7 +15,7 @@ class ContrastMethodEncoder(EnumEncoder): - TYPE = 'TBD#ContrastMethod' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ContrastMethod' encoder = (ContrastMethodI, ContrastMethodEncoder) diff --git a/omero_marshal/encode/encoders/dataset.py b/omero_marshal/encode/encoders/dataset.py index 4b587e5e..7830440c 100644 --- a/omero_marshal/encode/encoders/dataset.py +++ b/omero_marshal/encode/encoders/dataset.py @@ -18,8 +18,8 @@ class Dataset201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Dataset' - def encode(self, obj): - v = super(Dataset201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Dataset201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) if obj.isImageLinksLoaded() and obj.sizeOfImageLinks() > 0: @@ -28,7 +28,7 @@ def encode(self, obj): image = image_link.child image_encoder = self.ctx.get_encoder(image.__class__) images.append( - image_encoder.encode(image) + image_encoder.encode(image, False) ) v['Images'] = images return v diff --git a/omero_marshal/encode/encoders/details.py b/omero_marshal/encode/encoders/details.py index 5234bbb6..11d0883e 100644 --- a/omero_marshal/encode/encoders/details.py +++ b/omero_marshal/encode/encoders/details.py @@ -15,22 +15,23 @@ class DetailsEncoder(Encoder): - TYPE = 'TBD#Details' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Details' - def encode(self, obj): - v = super(DetailsEncoder, self).encode(obj) + def encode(self, obj, include_context=None): + # Never include contexts on these objects + v = super(DetailsEncoder, self).encode(obj, False) if obj.owner is not None: encoder = self.ctx.get_encoder(obj.owner.__class__) - v['owner'] = encoder.encode(obj.owner) + v['owner'] = encoder.encode(obj.owner, False) if obj.group is not None: encoder = self.ctx.get_encoder(obj.group.__class__) - v['group'] = encoder.encode(obj.group) + v['group'] = encoder.encode(obj.group, False) if obj.permissions is not None: encoder = self.ctx.get_encoder(obj.permissions.__class__) - v['permissions'] = encoder.encode(obj.permissions) + v['permissions'] = encoder.encode(obj.permissions, False) if obj.externalInfo is not None: encoder = self.ctx.get_encoder(obj.externalInfo.__class__) - v['externalInfo'] = encoder.encode(obj.externalInfo) + v['externalInfo'] = encoder.encode(obj.externalInfo, False) return v diff --git a/omero_marshal/encode/encoders/dimensionorder.py b/omero_marshal/encode/encoders/dimensionorder.py index 6ebf5428..8abd57b3 100644 --- a/omero_marshal/encode/encoders/dimensionorder.py +++ b/omero_marshal/encode/encoders/dimensionorder.py @@ -15,7 +15,7 @@ class DimensionOrderEncoder(EnumEncoder): - TYPE = 'TBD#DimensionOrder' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#DimensionOrder' encoder = (DimensionOrderI, DimensionOrderEncoder) diff --git a/omero_marshal/encode/encoders/double_annotation.py b/omero_marshal/encode/encoders/double_annotation.py index 9bb57091..817bcb7c 100644 --- a/omero_marshal/encode/encoders/double_annotation.py +++ b/omero_marshal/encode/encoders/double_annotation.py @@ -19,8 +19,9 @@ class DoubleAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#DoubleAnnotation' - def encode(self, obj): - v = super(DoubleAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(DoubleAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.doubleValue) return v diff --git a/omero_marshal/encode/encoders/ellipse.py b/omero_marshal/encode/encoders/ellipse.py index 6f111d4b..7b5479f9 100644 --- a/omero_marshal/encode/encoders/ellipse.py +++ b/omero_marshal/encode/encoders/ellipse.py @@ -22,8 +22,8 @@ class Ellipse201501Encoder(ShapeEncoder): RADIUSX_PROPERTY_NAME = 'rx' RADIUSY_PROPERTY_NAME = 'ry' - def encode(self, obj): - v = super(Ellipse201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Ellipse201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X', getattr(obj, self.X_PROPERTY_NAME)) self.set_if_not_none(v, 'Y', getattr(obj, self.Y_PROPERTY_NAME)) self.set_if_not_none( diff --git a/omero_marshal/encode/encoders/enum.py b/omero_marshal/encode/encoders/enum.py index 0dc061f4..39d5132b 100644 --- a/omero_marshal/encode/encoders/enum.py +++ b/omero_marshal/encode/encoders/enum.py @@ -17,7 +17,7 @@ class EnumEncoder(Encoder): def __init__(self, ctx): super(EnumEncoder, self).__init__(ctx) - def encode(self, obj): - v = super(EnumEncoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(EnumEncoder, self).encode(obj, include_context) self.set_if_not_none(v, 'value', obj.value) return v diff --git a/omero_marshal/encode/encoders/experimenter.py b/omero_marshal/encode/encoders/experimenter.py index 111b0851..5012e1ab 100644 --- a/omero_marshal/encode/encoders/experimenter.py +++ b/omero_marshal/encode/encoders/experimenter.py @@ -18,8 +18,8 @@ class Experimenter201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Experimenter' - def encode(self, obj): - v = super(Experimenter201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Experimenter201501Encoder, self).encode(obj, include_context) if not obj.isLoaded(): return v self.set_if_not_none(v, 'FirstName', obj.firstName) diff --git a/omero_marshal/encode/encoders/experimentergroup.py b/omero_marshal/encode/encoders/experimentergroup.py index 3c64c314..3723f5b4 100644 --- a/omero_marshal/encode/encoders/experimentergroup.py +++ b/omero_marshal/encode/encoders/experimentergroup.py @@ -19,8 +19,9 @@ class ExperimenterGroup201501Encoder(Encoder): TYPE = \ 'http://www.openmicroscopy.org/Schemas/OME/2015-01#ExperimenterGroup' - def encode(self, obj): - v = super(ExperimenterGroup201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(ExperimenterGroup201501Encoder, self).encode( + obj, include_context) if not obj.isLoaded(): return v self.set_if_not_none(v, 'Description', obj.description) diff --git a/omero_marshal/encode/encoders/externalinfo.py b/omero_marshal/encode/encoders/externalinfo.py index 6e775bc5..e3fc899b 100644 --- a/omero_marshal/encode/encoders/externalinfo.py +++ b/omero_marshal/encode/encoders/externalinfo.py @@ -15,10 +15,11 @@ class ExternalInfoEncoder(Encoder): - TYPE = 'TBD#ExternalInfo' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#ExternalInfo' - def encode(self, obj): - v = super(ExternalInfoEncoder, self).encode(obj) + def encode(self, obj, include_context=None): + # Never include contexts for these objects + v = super(ExternalInfoEncoder, self).encode(obj, False) if not obj.isLoaded(): return v self.set_if_not_none(v, 'EntityId', obj.entityId) diff --git a/omero_marshal/encode/encoders/file_annotation.py b/omero_marshal/encode/encoders/file_annotation.py index 17458794..f4b826f6 100644 --- a/omero_marshal/encode/encoders/file_annotation.py +++ b/omero_marshal/encode/encoders/file_annotation.py @@ -19,12 +19,13 @@ class FileAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#FileAnnotation' - def encode(self, obj): - v = super(FileAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(FileAnnotation201501Encoder, self).encode( + obj, include_context) if obj.file is not None and obj.file.isLoaded(): original_file_encoder = \ self.ctx.get_encoder(obj.file.__class__) - v['File'] = original_file_encoder.encode(obj.file) + v['File'] = original_file_encoder.encode(obj.file, False) return v diff --git a/omero_marshal/encode/encoders/format.py b/omero_marshal/encode/encoders/format.py index 182a1165..4807cb70 100644 --- a/omero_marshal/encode/encoders/format.py +++ b/omero_marshal/encode/encoders/format.py @@ -15,7 +15,7 @@ class FormatEncoder(EnumEncoder): - TYPE = 'TBD#Format' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Format' encoder = (FormatI, FormatEncoder) diff --git a/omero_marshal/encode/encoders/illumination.py b/omero_marshal/encode/encoders/illumination.py index 4596a5db..f0e1fc4d 100644 --- a/omero_marshal/encode/encoders/illumination.py +++ b/omero_marshal/encode/encoders/illumination.py @@ -15,7 +15,7 @@ class IlluminationEncoder(EnumEncoder): - TYPE = 'TBD#Illumination' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#IlluminationType' encoder = (IlluminationI, IlluminationEncoder) diff --git a/omero_marshal/encode/encoders/image.py b/omero_marshal/encode/encoders/image.py index 38555a5f..4f60dff4 100644 --- a/omero_marshal/encode/encoders/image.py +++ b/omero_marshal/encode/encoders/image.py @@ -18,8 +18,8 @@ class Image201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Image' - def encode(self, obj): - v = super(Image201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Image201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'AcquisitionDate', obj.acquisitionDate) self.set_if_not_none(v, 'omero:archived', obj.archived) self.set_if_not_none(v, 'Description', obj.description) @@ -30,12 +30,12 @@ def encode(self, obj): if _format is not None and _format.isLoaded(): format_encoder = self.ctx.get_encoder(obj.format.__class__) self.set_if_not_none( - v, 'omero:format', format_encoder.encode(obj.format) + v, 'omero:format', format_encoder.encode(obj.format, False) ) if obj.isPixelsLoaded() and obj.sizeOfPixels() > 0: pixels = obj.getPrimaryPixels() pixels_encoder = self.ctx.get_encoder(pixels.__class__) - v['Pixels'] = pixels_encoder.encode(pixels) + v['Pixels'] = pixels_encoder.encode(pixels, False) return v diff --git a/omero_marshal/encode/encoders/label.py b/omero_marshal/encode/encoders/label.py index c0a7bf84..55eb9e75 100644 --- a/omero_marshal/encode/encoders/label.py +++ b/omero_marshal/encode/encoders/label.py @@ -18,8 +18,8 @@ class Label201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Label' - def encode(self, obj): - v = super(Label201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Label201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X', obj.x) self.set_if_not_none(v, 'Y', obj.y) return v diff --git a/omero_marshal/encode/encoders/line.py b/omero_marshal/encode/encoders/line.py index e518ad0f..ec66f4de 100644 --- a/omero_marshal/encode/encoders/line.py +++ b/omero_marshal/encode/encoders/line.py @@ -18,8 +18,8 @@ class Line201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Line' - def encode(self, obj): - v = super(Line201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Line201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X1', obj.x1) self.set_if_not_none(v, 'Y1', obj.y1) self.set_if_not_none(v, 'X2', obj.x2) @@ -31,8 +31,8 @@ class Line201606Encoder(Line201501Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Line' - def encode(self, obj): - v = super(Line201606Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Line201606Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'MarkerStart', obj.markerStart) self.set_if_not_none(v, 'MarkerEnd', obj.markerEnd) return v diff --git a/omero_marshal/encode/encoders/long_annotation.py b/omero_marshal/encode/encoders/long_annotation.py index 35106c8e..174eb6aa 100644 --- a/omero_marshal/encode/encoders/long_annotation.py +++ b/omero_marshal/encode/encoders/long_annotation.py @@ -19,8 +19,9 @@ class LongAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#LongAnnotation' - def encode(self, obj): - v = super(LongAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(LongAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.longValue) return v diff --git a/omero_marshal/encode/encoders/map_annotation.py b/omero_marshal/encode/encoders/map_annotation.py index 187cda0a..644e834d 100644 --- a/omero_marshal/encode/encoders/map_annotation.py +++ b/omero_marshal/encode/encoders/map_annotation.py @@ -19,8 +19,9 @@ class MapAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#MapAnnotation' - def encode(self, obj): - v = super(MapAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(MapAnnotation201501Encoder, self).encode( + obj, include_context) if obj.mapValue is None: return None self.set_if_not_none( diff --git a/omero_marshal/encode/encoders/mask.py b/omero_marshal/encode/encoders/mask.py index 83097a25..4a8530a1 100644 --- a/omero_marshal/encode/encoders/mask.py +++ b/omero_marshal/encode/encoders/mask.py @@ -18,8 +18,8 @@ class Mask201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Mask' - def encode(self, obj): - v = super(Mask201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Mask201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X', obj.x) self.set_if_not_none(v, 'Y', obj.y) self.set_if_not_none(v, 'Width', obj.width) diff --git a/omero_marshal/encode/encoders/original_file.py b/omero_marshal/encode/encoders/original_file.py index 6d0c9133..98d88c40 100644 --- a/omero_marshal/encode/encoders/original_file.py +++ b/omero_marshal/encode/encoders/original_file.py @@ -15,10 +15,10 @@ class OriginalFileEncoder(Encoder): - TYPE = 'TBD#OriginalFile' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#OriginalFile' - def encode(self, obj): - v = super(OriginalFileEncoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(OriginalFileEncoder, self).encode(obj, include_context) self.set_if_not_none(v, 'path', obj.path) self.set_if_not_none(v, 'size', obj.size) self.set_if_not_none(v, 'atime', obj.atime) @@ -31,7 +31,7 @@ def encode(self, obj): checksum_algorithm_encoder = \ self.ctx.get_encoder(obj.hasher.__class__) v['hasher'] = \ - checksum_algorithm_encoder.encode(obj.hasher) + checksum_algorithm_encoder.encode(obj.hasher, False) return v diff --git a/omero_marshal/encode/encoders/permissions.py b/omero_marshal/encode/encoders/permissions.py index 5de6e6e0..b4e0e5de 100644 --- a/omero_marshal/encode/encoders/permissions.py +++ b/omero_marshal/encode/encoders/permissions.py @@ -15,10 +15,11 @@ class PermissionsEncoder(Encoder): - TYPE = 'TBD#Permissions' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#Permissions' - def encode(self, obj): - v = super(PermissionsEncoder, self).encode(obj) + def encode(self, obj, include_context=None): + # Never include contexts on these objects + v = super(PermissionsEncoder, self).encode(obj, False) v['perm'] = str(obj) v['canAnnotate'] = obj.canAnnotate() v['canDelete'] = obj.canDelete() diff --git a/omero_marshal/encode/encoders/photometricinterpretation.py b/omero_marshal/encode/encoders/photometricinterpretation.py index 6ad376ec..23f07a6d 100644 --- a/omero_marshal/encode/encoders/photometricinterpretation.py +++ b/omero_marshal/encode/encoders/photometricinterpretation.py @@ -15,7 +15,8 @@ class PhotometricInterpretationEncoder(EnumEncoder): - TYPE = 'TBD#PhotometricInterpretation' + TYPE = 'http://www.openmicroscopy.org/Schemas/OMERO/2016-06#' \ + 'PhotometricInterpretation' encoder = (PhotometricInterpretationI, PhotometricInterpretationEncoder) diff --git a/omero_marshal/encode/encoders/pixels.py b/omero_marshal/encode/encoders/pixels.py index 878680e7..3e36f15c 100644 --- a/omero_marshal/encode/encoders/pixels.py +++ b/omero_marshal/encode/encoders/pixels.py @@ -18,8 +18,8 @@ class Pixels201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Pixels' - def encode(self, obj): - v = super(Pixels201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Pixels201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'omero:methodology', obj.methodology) self.set_if_not_none(v, 'PhysicalSizeX', obj.physicalSizeX) self.set_if_not_none(v, 'PhysicalSizeY', obj.physicalSizeY) @@ -39,17 +39,17 @@ def encode(self, obj): dimension_order_encoder = \ self.ctx.get_encoder(dimension_order.__class__) v['DimensionOrder'] = \ - dimension_order_encoder.encode(dimension_order) + dimension_order_encoder.encode(dimension_order, False) pixels_type = obj.pixelsType if pixels_type is not None and pixels_type.isLoaded(): pixels_type_encoder = \ self.ctx.get_encoder(pixels_type.__class__) - v['Type'] = pixels_type_encoder.encode(pixels_type) + v['Type'] = pixels_type_encoder.encode(pixels_type, False) if obj.isChannelsLoaded() and obj.sizeOfChannels() > 0: channels = list() for channel in obj.copyChannels(): channel_encoder = self.ctx.get_encoder(channel.__class__) - channels.append(channel_encoder.encode(channel)) + channels.append(channel_encoder.encode(channel, False)) v['Channels'] = channels return v diff --git a/omero_marshal/encode/encoders/pixelstype.py b/omero_marshal/encode/encoders/pixelstype.py index 344b3978..989d5682 100644 --- a/omero_marshal/encode/encoders/pixelstype.py +++ b/omero_marshal/encode/encoders/pixelstype.py @@ -15,7 +15,7 @@ class PixelsTypeEncoder(EnumEncoder): - TYPE = 'TBD#PixelsType' + TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#PixelType' encoder = (PixelsTypeI, PixelsTypeEncoder) diff --git a/omero_marshal/encode/encoders/plate.py b/omero_marshal/encode/encoders/plate.py index 22ba99db..dc95706d 100644 --- a/omero_marshal/encode/encoders/plate.py +++ b/omero_marshal/encode/encoders/plate.py @@ -18,8 +18,8 @@ class Plate201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SPW/2015-01#Plate' - def encode(self, obj): - v = super(Plate201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Plate201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) self.set_if_not_none(v, 'ColumnNamingConvention', @@ -39,7 +39,7 @@ def encode(self, obj): for well in obj.copyWells(): well_encoder = self.ctx.get_encoder(well.__class__) wells.append( - well_encoder.encode(well) + well_encoder.encode(well, False) ) v['Wells'] = wells return v diff --git a/omero_marshal/encode/encoders/plateacquisition.py b/omero_marshal/encode/encoders/plateacquisition.py index 2382b64b..e605f8b5 100644 --- a/omero_marshal/encode/encoders/plateacquisition.py +++ b/omero_marshal/encode/encoders/plateacquisition.py @@ -18,8 +18,9 @@ class PlateAcquisition201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SPW/2015-01#PlateAcquisition' - def encode(self, obj): - v = super(PlateAcquisition201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(PlateAcquisition201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) self.set_if_not_none(v, 'MaximumFieldCount', obj.maximumFieldCount) diff --git a/omero_marshal/encode/encoders/point.py b/omero_marshal/encode/encoders/point.py index b7875731..05090b8e 100644 --- a/omero_marshal/encode/encoders/point.py +++ b/omero_marshal/encode/encoders/point.py @@ -20,8 +20,8 @@ class Point201501Encoder(ShapeEncoder): X_PROPERTY_NAME = 'cx' Y_PROPERTY_NAME = 'cy' - def encode(self, obj): - v = super(Point201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Point201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X', getattr(obj, self.X_PROPERTY_NAME)) self.set_if_not_none(v, 'Y', getattr(obj, self.Y_PROPERTY_NAME)) return v diff --git a/omero_marshal/encode/encoders/polygon.py b/omero_marshal/encode/encoders/polygon.py index b12418fc..02d42d80 100644 --- a/omero_marshal/encode/encoders/polygon.py +++ b/omero_marshal/encode/encoders/polygon.py @@ -18,8 +18,8 @@ class Polygon201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Polygon' - def encode(self, obj): - v = super(Polygon201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Polygon201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Points', obj.points) return v diff --git a/omero_marshal/encode/encoders/polyline.py b/omero_marshal/encode/encoders/polyline.py index 8f77f716..93455842 100644 --- a/omero_marshal/encode/encoders/polyline.py +++ b/omero_marshal/encode/encoders/polyline.py @@ -18,8 +18,8 @@ class Polyline201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Polyline' - def encode(self, obj): - v = super(Polyline201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Polyline201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Points', obj.points) return v @@ -28,8 +28,8 @@ class Polyline201606Encoder(Polyline201501Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Polyline' - def encode(self, obj): - v = super(Polyline201606Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Polyline201606Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'MarkerStart', obj.markerStart) self.set_if_not_none(v, 'MarkerEnd', obj.markerEnd) return v diff --git a/omero_marshal/encode/encoders/project.py b/omero_marshal/encode/encoders/project.py index 2cb08d09..03a0cd98 100644 --- a/omero_marshal/encode/encoders/project.py +++ b/omero_marshal/encode/encoders/project.py @@ -18,8 +18,8 @@ class Project201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/OME/2015-01#Project' - def encode(self, obj): - v = super(Project201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Project201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) if obj.isDatasetLinksLoaded() and obj.sizeOfDatasetLinks() > 0: @@ -28,7 +28,7 @@ def encode(self, obj): dataset = dataset_link.child dataset_encoder = self.ctx.get_encoder(dataset.__class__) datasets.append( - dataset_encoder.encode(dataset) + dataset_encoder.encode(dataset, False) ) v['Datasets'] = datasets return v diff --git a/omero_marshal/encode/encoders/rectangle.py b/omero_marshal/encode/encoders/rectangle.py index 09269fa0..af018aa8 100644 --- a/omero_marshal/encode/encoders/rectangle.py +++ b/omero_marshal/encode/encoders/rectangle.py @@ -25,8 +25,8 @@ class Rectangle201501Encoder(ShapeEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Rectangle' - def encode(self, obj): - v = super(Rectangle201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Rectangle201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'X', obj.x) self.set_if_not_none(v, 'Y', obj.y) self.set_if_not_none(v, 'Width', obj.width) diff --git a/omero_marshal/encode/encoders/roi.py b/omero_marshal/encode/encoders/roi.py index 33fd9ac4..1143e75e 100644 --- a/omero_marshal/encode/encoders/roi.py +++ b/omero_marshal/encode/encoders/roi.py @@ -18,15 +18,15 @@ class Roi201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#ROI' - def encode(self, obj): - v = super(Roi201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Roi201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) if obj.isShapesLoaded() and obj.sizeOfShapes() > 0: shapes = list() for shape in obj.copyShapes(): shape_encoder = self.ctx.get_encoder(shape.__class__) - shapes.append(shape_encoder.encode(shape)) + shapes.append(shape_encoder.encode(shape, False)) v['shapes'] = shapes return v diff --git a/omero_marshal/encode/encoders/screen.py b/omero_marshal/encode/encoders/screen.py index 11d6dfae..141b42d1 100644 --- a/omero_marshal/encode/encoders/screen.py +++ b/omero_marshal/encode/encoders/screen.py @@ -18,8 +18,8 @@ class Screen201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SPW/2015-01#Screen' - def encode(self, obj): - v = super(Screen201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Screen201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Name', obj.name) self.set_if_not_none(v, 'Description', obj.description) self.set_if_not_none(v, 'ProtocolDescription', obj.protocolDescription) @@ -35,7 +35,7 @@ def encode(self, obj): plate = plate_link.child plate_encoder = self.ctx.get_encoder(plate.__class__) plates.append( - plate_encoder.encode(plate) + plate_encoder.encode(plate, False) ) v['Plates'] = plates return v diff --git a/omero_marshal/encode/encoders/shape.py b/omero_marshal/encode/encoders/shape.py index 79fd4cf2..4798c58e 100644 --- a/omero_marshal/encode/encoders/shape.py +++ b/omero_marshal/encode/encoders/shape.py @@ -19,8 +19,8 @@ class Shape201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Shape' - def encode(self, obj): - v = super(Shape201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Shape201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'FillColor', obj.fillColor) self.set_if_not_none(v, 'FillRule', obj.fillRule) self.set_if_not_none(v, 'FontFamily', obj.fontFamily) @@ -38,7 +38,7 @@ def encode(self, obj): if transform: transform_encoder = self.ctx.get_encoder(transform.__class__) self.set_if_not_none( - v, 'Transform', transform_encoder.encode(transform)) + v, 'Transform', transform_encoder.encode(transform, False)) self.set_linecap(v, obj) self.set_visible(v, obj) return v diff --git a/omero_marshal/encode/encoders/tag_annotation.py b/omero_marshal/encode/encoders/tag_annotation.py index 8e6a9452..56159bab 100644 --- a/omero_marshal/encode/encoders/tag_annotation.py +++ b/omero_marshal/encode/encoders/tag_annotation.py @@ -19,8 +19,9 @@ class TagAnnotation201501Encoder(TextAnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#TagAnnotation' - def encode(self, obj): - v = super(TagAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(TagAnnotation201501Encoder, self).encode( + obj, include_context) return v diff --git a/omero_marshal/encode/encoders/term_annotation.py b/omero_marshal/encode/encoders/term_annotation.py index 4318f1e4..2b6d3d28 100644 --- a/omero_marshal/encode/encoders/term_annotation.py +++ b/omero_marshal/encode/encoders/term_annotation.py @@ -19,8 +19,9 @@ class TermAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#TermAnnotation' - def encode(self, obj): - v = super(TermAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(TermAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.termValue) return v diff --git a/omero_marshal/encode/encoders/text_annotation.py b/omero_marshal/encode/encoders/text_annotation.py index 4cdeb296..ca03c438 100644 --- a/omero_marshal/encode/encoders/text_annotation.py +++ b/omero_marshal/encode/encoders/text_annotation.py @@ -19,8 +19,9 @@ class TextAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#TextAnnotation' - def encode(self, obj): - v = super(TextAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(TextAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.textValue) return v diff --git a/omero_marshal/encode/encoders/timestamp_annotation.py b/omero_marshal/encode/encoders/timestamp_annotation.py index d6dcbbf3..417211cb 100644 --- a/omero_marshal/encode/encoders/timestamp_annotation.py +++ b/omero_marshal/encode/encoders/timestamp_annotation.py @@ -19,8 +19,9 @@ class TimestampAnnotation201501Encoder(AnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#TimestampAnnotation' - def encode(self, obj): - v = super(TimestampAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(TimestampAnnotation201501Encoder, self).encode( + obj, include_context) self.set_if_not_none(v, 'Value', obj.timeValue) return v diff --git a/omero_marshal/encode/encoders/well.py b/omero_marshal/encode/encoders/well.py index e8b0a5d1..6ae1c859 100644 --- a/omero_marshal/encode/encoders/well.py +++ b/omero_marshal/encode/encoders/well.py @@ -18,8 +18,8 @@ class Well201501Encoder(AnnotatableEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SPW/2015-01#Well' - def encode(self, obj): - v = super(Well201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(Well201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'Column', obj.column) self.set_if_not_none(v, 'Row', obj.row) self.set_if_not_none(v, 'ExternalDescription', obj.externalDescription) @@ -36,7 +36,7 @@ def encode(self, obj): continue wellsample_encoder = self.ctx.get_encoder(wellsample.__class__) wellsamples.append( - wellsample_encoder.encode(wellsample) + wellsample_encoder.encode(wellsample, False) ) v['WellSamples'] = wellsamples return v diff --git a/omero_marshal/encode/encoders/wellsample.py b/omero_marshal/encode/encoders/wellsample.py index 4091d64c..958b9367 100644 --- a/omero_marshal/encode/encoders/wellsample.py +++ b/omero_marshal/encode/encoders/wellsample.py @@ -18,19 +18,19 @@ class WellSample201501Encoder(Encoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SPW/2015-01#WellSample' - def encode(self, obj): - v = super(WellSample201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(WellSample201501Encoder, self).encode(obj, include_context) self.set_if_not_none(v, 'PositionX', obj.posX) self.set_if_not_none(v, 'PositionY', obj.posY) self.set_if_not_none(v, 'Timepoint', obj.timepoint) if obj.image is not None and obj.image.isLoaded(): image_encoder = self.ctx.get_encoder(obj.image.__class__) - v['Image'] = image_encoder.encode(obj.image) + v['Image'] = image_encoder.encode(obj.image, False) if obj.plateAcquisition is not None \ and obj.plateAcquisition.isLoaded(): encoder = self.ctx.get_encoder(obj.plateAcquisition.__class__) - v['PlateAcquisition'] = encoder.encode(obj.plateAcquisition) + v['PlateAcquisition'] = encoder.encode(obj.plateAcquisition, False) return v diff --git a/omero_marshal/encode/encoders/xml_annotation.py b/omero_marshal/encode/encoders/xml_annotation.py index c1e44b8d..5a54d492 100644 --- a/omero_marshal/encode/encoders/xml_annotation.py +++ b/omero_marshal/encode/encoders/xml_annotation.py @@ -19,8 +19,9 @@ class XmlAnnotation201501Encoder(TextAnnotationEncoder): TYPE = 'http://www.openmicroscopy.org/Schemas/SA/2015-01' \ '#XmlAnnotation' - def encode(self, obj): - v = super(XmlAnnotation201501Encoder, self).encode(obj) + def encode(self, obj, include_context=None): + v = super(XmlAnnotation201501Encoder, self).encode( + obj, include_context) return v diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 2a84ade1..cdcf3997 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -11,6 +11,8 @@ import pytest +from omero_marshal.encode import BASE_CONTEXT, OMERO_CONTEXT + from omero.model import \ AcquisitionModeI, \ BooleanAnnotationI, \ @@ -709,3 +711,13 @@ def mask(identity_transform): o.height = rdouble(2.0) o.id = rlong(8) return o + + +@pytest.fixture() +def contexts(): + return { + '@context': { + "@vocab": BASE_CONTEXT, + "omero": OMERO_CONTEXT, + } + } diff --git a/tests/unit/test_affinetransform_encoders.py b/tests/unit/test_affinetransform_encoders.py index a06f7c3c..523a944e 100644 --- a/tests/unit/test_affinetransform_encoders.py +++ b/tests/unit/test_affinetransform_encoders.py @@ -9,7 +9,7 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_encoder, SCHEMA_VERSION, ROI_SCHEMA_URL +from omero_marshal import get_encoder, SCHEMA_VERSION from omero.rtypes import rdouble try: @@ -33,7 +33,7 @@ def create_affine_transform(a00, a10, a01, a11, a02, a12): return t -TRANSFORMATION_TYPE = '%s#AffineTransform' % ROI_SCHEMA_URL +TRANSFORMATION_TYPE = 'AffineTransform' TRANSFORMATIONS = [ ( @@ -189,5 +189,5 @@ def test_shape_transforms(self, point, transform_s, transform_o): if SCHEMA_VERSION == '2015-01': transform_o['@id'] = -1 else: - transform_o['omero:details'] = {'@type': 'TBD#Details'} + transform_o['omero:details'] = {'@type': 'omero:Details'} assert v['Transform'] == transform_o diff --git a/tests/unit/test_base_decoder.py b/tests/unit/test_base_decoder.py index 40a2d820..4ef8f45e 100644 --- a/tests/unit/test_base_decoder.py +++ b/tests/unit/test_base_decoder.py @@ -12,17 +12,17 @@ import json from omero.model import RoiI -from omero_marshal import get_encoder, get_decoder, ROI_SCHEMA_URL +from omero_marshal import get_encoder, get_decoder class TestBaseDecoder(object): AS_STRING = """{ - "@type": "%s#ROI", + "@type": "ROI", "@id": 1, "Name": "the_name", "Description": "the_description" -}""" % ROI_SCHEMA_URL +}""" def assert_roi(self, roi, has_annotations=False): assert roi.__class__ == RoiI diff --git a/tests/unit/test_base_encoder.py b/tests/unit/test_base_encoder.py index 45bac270..5459d3bd 100644 --- a/tests/unit/test_base_encoder.py +++ b/tests/unit/test_base_encoder.py @@ -9,41 +9,42 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_encoder, ROI_SCHEMA_URL, OME_SCHEMA_URL +from omero_marshal import get_encoder class TestBaseEncoder(object): - def test_base_encoder(self, roi): + def test_base_encoder_roi(self, roi, contexts): encoder = get_encoder(roi.__class__) v = encoder.encode(roi) assert v == { + **contexts, '@id': 1, - '@type': '%s#ROI' % ROI_SCHEMA_URL, + '@type': 'ROI', 'Name': 'the_name', 'Description': 'the_description', 'omero:details': { - '@type': 'TBD#Details', + '@type': 'omero:Details', 'group': { '@id': 1, - '@type': '%s#ExperimenterGroup' % OME_SCHEMA_URL, + '@type': 'ExperimenterGroup', 'Description': 'the_description', 'Name': 'the_name', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'owner': { '@id': 1, - '@type': '%s#Experimenter' % OME_SCHEMA_URL, + '@type': 'Experimenter', 'Email': 'the_email', 'FirstName': 'the_firstName', 'Institution': 'the_institution', 'LastName': 'the_lastName', 'MiddleName': 'the_middleName', 'UserName': 'the_omeName', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'permissions': { - '@type': 'TBD#Permissions', + '@type': 'omero:Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, @@ -58,50 +59,52 @@ def test_base_encoder(self, roi): 'isWorldWrite': True }, 'externalInfo': { - '@type': 'TBD#ExternalInfo', + '@type': 'omero:ExternalInfo', 'EntityId': 123, 'EntityType': 'test', 'Lsid': 'ABCDEF', 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de', 'omero:details': { - '@type': 'TBD#Details' + '@type': 'omero:Details' }, }, } } - def test_base_encoder_unloaded_details(self, roi): + def test_base_encoder_roi_unloaded_details(self, roi, contexts): roi.unloadDetails() encoder = get_encoder(roi.__class__) v = encoder.encode(roi) assert v == { + **contexts, '@id': 1, - '@type': '%s#ROI' % ROI_SCHEMA_URL, + '@type': 'ROI', 'Name': 'the_name', 'Description': 'the_description' } - def test_base_encoder_with_unloaded_details_children( - self, roi_with_unloaded_details_children): + def test_base_encoder_roi_with_unloaded_details_children( + self, roi_with_unloaded_details_children, contexts): encoder = get_encoder(roi_with_unloaded_details_children.__class__) v = encoder.encode(roi_with_unloaded_details_children) assert v == { + **contexts, '@id': 1, - '@type': '%s#ROI' % ROI_SCHEMA_URL, + '@type': 'ROI', 'Name': 'the_name', 'Description': 'the_description', 'omero:details': { - '@type': 'TBD#Details', + '@type': 'omero:Details', 'owner': { '@id': 1, - '@type': '%s#Experimenter' % OME_SCHEMA_URL + '@type': 'Experimenter' }, 'group': { '@id': 1, - '@type': '%s#ExperimenterGroup' % OME_SCHEMA_URL + '@type': 'ExperimenterGroup' }, 'permissions': { - '@type': 'TBD#Permissions', + '@type': 'omero:Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, @@ -116,13 +119,13 @@ def test_base_encoder_with_unloaded_details_children( 'isWorldWrite': True }, 'externalInfo': { - '@type': 'TBD#ExternalInfo', + '@type': 'omero:ExternalInfo', 'EntityId': 123, 'EntityType': 'test', 'Lsid': 'ABCDEF', 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de', 'omero:details': { - '@type': 'TBD#Details' + '@type': 'omero:Details' }, }, } @@ -131,41 +134,43 @@ def test_base_encoder_with_unloaded_details_children( class TestDetailsEncoder(object): - def experimenter_json(self): + def experimenter_json(self, contexts): return { + **contexts, '@id': 1, - '@type': '%s#Experimenter' % OME_SCHEMA_URL, + '@type': 'Experimenter', 'FirstName': 'the_firstName', 'MiddleName': 'the_middleName', 'LastName': 'the_lastName', 'Email': 'the_email', 'Institution': 'the_institution', 'UserName': 'the_omeName', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } - def test_experimenter_encoder(self, experimenter): + def test_experimenter_encoder(self, experimenter, contexts): encoder = get_encoder(experimenter.__class__) v = encoder.encode(experimenter) - assert v == self.experimenter_json() + assert v == self.experimenter_json(contexts) - def experimenter_group_json(self): + def experimenter_group_json(self, contexts): return { + **contexts, '@id': 1, - '@type': '%s#ExperimenterGroup' % OME_SCHEMA_URL, + '@type': 'ExperimenterGroup', 'Name': 'the_name', 'Description': 'the_description', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } - def test_experimenter_group_encoder(self, experimenter_group): + def test_experimenter_group_encoder(self, experimenter_group, contexts): encoder = get_encoder(experimenter_group.__class__) v = encoder.encode(experimenter_group) - assert v == self.experimenter_group_json() + assert v == self.experimenter_group_json(contexts) def permissions_json(self): return { - '@type': 'TBD#Permissions', + '@type': 'omero:Permissions', 'perm': 'rwrwrw', 'canAnnotate': True, 'canDelete': True, @@ -187,13 +192,13 @@ def test_permissions_encoder(self, permissions): def externalInfo_json(self): return { - '@type': 'TBD#ExternalInfo', + '@type': 'omero:ExternalInfo', 'EntityId': 123, 'EntityType': 'test', 'Lsid': 'ABCDEF', 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de', 'omero:details': { - '@type': 'TBD#Details' + '@type': 'omero:Details' }, } @@ -202,13 +207,13 @@ def test_externalInfo_encoder(self, externalInfo): v = encoder.encode(externalInfo) assert v == self.externalInfo_json() - def test_details_encoder(self, details): + def test_details_encoder(self, details, contexts): encoder = get_encoder(details.__class__) v = encoder.encode(details) assert v == { - '@type': 'TBD#Details', + '@type': 'omero:Details', 'permissions': self.permissions_json(), - 'owner': self.experimenter_json(), - 'group': self.experimenter_group_json(), + 'owner': self.experimenter_json({}), + 'group': self.experimenter_group_json({}), 'externalInfo': self.externalInfo_json(), } diff --git a/tests/unit/test_container_encoders.py b/tests/unit/test_container_encoders.py index 70afa038..90e90107 100644 --- a/tests/unit/test_container_encoders.py +++ b/tests/unit/test_container_encoders.py @@ -9,65 +9,69 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_encoder, OME_SCHEMA_URL, SPW_SCHEMA_URL +from omero_marshal import get_encoder class TestProjectEncoder(object): - def test_project_encoder(self, project): + def test_project_encoder(self, project, contexts): encoder = get_encoder(project.__class__) v = encoder.encode(project) assert v == { + **contexts, '@id': 1, - '@type': '%s#Project' % OME_SCHEMA_URL, + '@type': 'Project', 'Name': 'the_name', 'Description': 'the_description', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } - def test_project_with_datasets_encoder(self, project_with_datasets): + def test_project_with_datasets_encoder( + self, project_with_datasets, contexts): encoder = get_encoder(project_with_datasets.__class__) v = encoder.encode(project_with_datasets) assert v == { + **contexts, '@id': 1, - '@type': '%s#Project' % OME_SCHEMA_URL, + '@type': 'Project', 'Name': 'the_name', 'Description': 'the_description', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'Datasets': [{ '@id': 1, - '@type': '%s#Dataset' % OME_SCHEMA_URL, + '@type': 'Dataset', 'Name': 'dataset_name_1', 'Description': 'dataset_description_1', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 2, - '@type': '%s#Dataset' % OME_SCHEMA_URL, + '@type': 'Dataset', 'Name': 'dataset_name_2', 'Description': 'dataset_description_2', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }] } def test_project_with_datasets_and_images_encoder( - self, project_with_datasets_and_images): + self, project_with_datasets_and_images, contexts): encoder = get_encoder(project_with_datasets_and_images.__class__) v = encoder.encode(project_with_datasets_and_images) assert v == { + **contexts, '@id': 1, - '@type': '%s#Project' % OME_SCHEMA_URL, + '@type': 'Project', 'Name': 'the_name', 'Description': 'the_description', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'Datasets': [{ '@id': 1, - '@type': '%s#Dataset' % OME_SCHEMA_URL, + '@type': 'Dataset', 'Name': 'dataset_name_1', 'Description': 'dataset_description_1', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'Images': [{ '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -76,14 +80,14 @@ def test_project_with_datasets_and_images_encoder( 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 2, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_2', 'omero:archived': False, @@ -92,21 +96,21 @@ def test_project_with_datasets_and_images_encoder( 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }] }, { '@id': 2, - '@type': '%s#Dataset' % OME_SCHEMA_URL, + '@type': 'Dataset', 'Name': 'dataset_name_2', 'Description': 'dataset_description_2', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'Images': [{ '@id': 3, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_3', 'omero:archived': False, @@ -115,14 +119,14 @@ def test_project_with_datasets_and_images_encoder( 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 4, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_4', 'omero:archived': False, @@ -131,11 +135,11 @@ def test_project_with_datasets_and_images_encoder( 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }] }] } @@ -143,12 +147,13 @@ def test_project_with_datasets_and_images_encoder( class TestScreenEncoder(object): - def test_screen_encoder(self, screen): + def test_screen_encoder(self, screen, contexts): encoder = get_encoder(screen.__class__) v = encoder.encode(screen) assert v == { + **contexts, '@id': 4, - '@type': '%s#Screen' % SPW_SCHEMA_URL, + '@type': 'Screen', 'Name': 'the_name', 'Description': 'the_description', 'ProtocolDescription': 'the_protocol_description', @@ -156,15 +161,16 @@ def test_screen_encoder(self, screen): 'ReagentSetDescription': 'the_reagent_set_description', 'ReagentSetIdentifier': 'the_reagent_set_identifier', 'Type': 'the_type', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } - def test_screen_with_plate_encoder(self, screen_with_plates): + def test_screen_with_plate_encoder(self, screen_with_plates, contexts): encoder = get_encoder(screen_with_plates.__class__) v = encoder.encode(screen_with_plates) assert v == { + **contexts, '@id': 4, - '@type': '%s#Screen' % SPW_SCHEMA_URL, + '@type': 'Screen', 'Name': 'the_name', 'Description': 'the_description', 'ProtocolDescription': 'the_protocol_description', @@ -172,10 +178,10 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'ReagentSetDescription': 'the_reagent_set_description', 'ReagentSetIdentifier': 'the_reagent_set_identifier', 'Type': 'the_type', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'Plates': [{ '@id': 5, - '@type': '%s#Plate' % SPW_SCHEMA_URL, + '@type': 'Plate', 'Name': 'plate_name_5', 'Description': 'plate_description_5', 'ColumnNamingConvention': 'number', @@ -186,20 +192,20 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'ExternalIdentifier': 'external_identifier_5', 'Status': 'status_5', 'WellOriginX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 0.1 }, 'WellOriginY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.1 }, 'Wells': [{ '@id': 7, - '@type': '%s#Well' % SPW_SCHEMA_URL, + '@type': 'Well', 'Column': 2, 'Row': 1, 'ExternalDescription': 'external_description_7', @@ -209,15 +215,15 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:status': 'the_status', 'WellSamples': [{ '@id': 9, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -225,7 +231,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -234,34 +240,34 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 7, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_7', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_7', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 10, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -269,7 +275,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -278,28 +284,28 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 7, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_7', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_7', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 8, - '@type': '%s#Well' % SPW_SCHEMA_URL, + '@type': 'Well', 'Column': 2, 'Row': 1, 'ExternalDescription': 'external_description_8', @@ -309,15 +315,15 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:status': 'the_status', 'WellSamples': [{ '@id': 9, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -325,7 +331,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -334,34 +340,34 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 8, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_8', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_8', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 10, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -369,7 +375,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -378,30 +384,30 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 8, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_8', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_8', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 6, - '@type': '%s#Plate' % SPW_SCHEMA_URL, + '@type': 'Plate', 'Name': 'plate_name_6', 'Description': 'plate_description_6', 'ColumnNamingConvention': 'number', @@ -412,20 +418,20 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'ExternalIdentifier': 'external_identifier_6', 'Status': 'status_6', 'WellOriginX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 0.1 }, 'WellOriginY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.1 }, 'Wells': [{ '@id': 7, - '@type': '%s#Well' % SPW_SCHEMA_URL, + '@type': 'Well', 'Column': 2, 'Row': 1, 'ExternalDescription': 'external_description_7', @@ -435,15 +441,15 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:status': 'the_status', 'WellSamples': [{ '@id': 9, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -451,7 +457,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -460,34 +466,34 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 7, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_7', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_7', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 10, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -495,7 +501,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -504,28 +510,28 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 7, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_7', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_7', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 8, - '@type': '%s#Well' % SPW_SCHEMA_URL, + '@type': 'Well', 'Column': 2, 'Row': 1, 'ExternalDescription': 'external_description_8', @@ -535,15 +541,15 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:status': 'the_status', 'WellSamples': [{ '@id': 9, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -551,7 +557,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -560,34 +566,34 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 8, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_8', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_8', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { '@id': 10, - '@type': '%s#WellSample' % SPW_SCHEMA_URL, + '@type': 'WellSample', 'PositionX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 1.0 }, 'PositionY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'REFERENCEFRAME', 'Symbol': 'reference frame', 'Value': 2.0 @@ -595,7 +601,7 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'Timepoint': 1, 'Image': { '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -604,26 +610,26 @@ def test_screen_with_plate_encoder(self, screen_with_plates): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'PlateAcquisition': { '@id': 8, - '@type': '%s#PlateAcquisition' % SPW_SCHEMA_URL, + '@type': 'PlateAcquisition', 'Description': 'plateacquisition_description_8', 'EndTime': 2, 'MaximumFieldCount': 1, 'Name': 'plateacquisition_name_8', 'StartTime': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }] } diff --git a/tests/unit/test_image_pixels_encoder.py b/tests/unit/test_image_pixels_encoder.py index 0628693f..389907cf 100644 --- a/tests/unit/test_image_pixels_encoder.py +++ b/tests/unit/test_image_pixels_encoder.py @@ -9,17 +9,18 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_encoder, OME_SCHEMA_URL +from omero_marshal import get_encoder class TestImagePixelsEncoder(object): - def test_image_encoder(self, image): + def test_image_encoder(self, image, contexts): encoder = get_encoder(image.__class__) - v = encoder.encode(image) + v = encoder.encode(image, True) assert v == { + **contexts, '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -28,19 +29,20 @@ def test_image_encoder(self, image): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } - def test_image_pixels_encoder(self, image_pixels): + def test_image_pixels_encoder(self, image_pixels, contexts): encoder = get_encoder(image_pixels.__class__) - v = encoder.encode(image_pixels) + v = encoder.encode(image_pixels, True) assert v == { + **contexts, '@id': 1, - '@type': '%s#Image' % OME_SCHEMA_URL, + '@type': 'Image', 'AcquisitionDate': 1, 'Name': 'image_name_1', 'omero:archived': False, @@ -49,28 +51,28 @@ def test_image_pixels_encoder(self, image_pixels): 'omero:series': 0, 'omero:format': { '@id': 1, - '@type': 'TBD#Format', + '@type': 'omero:Format', 'value': 'PNG', - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, }, 'Pixels': { '@id': 1, - '@type': '%s#Pixels' % OME_SCHEMA_URL, + '@type': 'Pixels', 'omero:methodology': 'methodology', 'PhysicalSizeX': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'MICROMETER', 'Symbol': 'µm', 'Value': 1.0 }, 'PhysicalSizeY': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'MICROMETER', 'Symbol': 'µm', 'Value': 2.0 }, 'PhysicalSizeZ': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'MICROMETER', 'Symbol': 'µm', 'Value': 3.0 @@ -83,7 +85,7 @@ def test_image_pixels_encoder(self, image_pixels): 'SizeC': 4, 'SizeT': 5, 'TimeIncrement': { - '@type': 'TBD#TimeI', + '@type': 'omero:TimeI', 'Unit': 'MILLISECOND', 'Symbol': 'ms', 'Value': 1.0 @@ -92,40 +94,40 @@ def test_image_pixels_encoder(self, image_pixels): 'omero:waveStart': 1, 'DimensionOrder': { '@id': 1, - '@type': 'TBD#DimensionOrder', + '@type': 'DimensionOrder', 'value': 'XYZCT', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'Type': { '@id': 1, - '@type': 'TBD#PixelsType', + '@type': 'PixelType', 'value': 'bit', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'Channels': [{ '@id': 1, - '@type': '%s#Channel' % OME_SCHEMA_URL, + '@type': 'Channel', 'AcquisitionMode': { '@id': 1, - '@type': 'TBD#AcquisitionMode', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'AcquisitionMode', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'WideField' }, 'Color': -1, 'ContrastMethod': { '@id': 8, - '@type': 'TBD#ContrastMethod', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'ContrastMethod', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'Fluorescence' }, 'EmissionWavelength': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 509.0 }, 'ExcitationWavelength': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 488.0 @@ -133,14 +135,14 @@ def test_image_pixels_encoder(self, image_pixels): 'Fluor': 'GFP', 'Illumination': { '@id': 1, - '@type': 'TBD#Illumination', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'IlluminationType', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'Transmitted' }, 'NDFilter': 1.0, 'Name': 'GFP/488', 'PinholeSize': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 1.0 @@ -148,38 +150,38 @@ def test_image_pixels_encoder(self, image_pixels): 'PockelCellSetting': 0, 'SamplesPerPixel': 2, 'omero:LogicalChannelId': 1, - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'omero:lookupTable': 'rainbow', 'omero:photometricInterpretation': { '@id': 1, - '@type': 'TBD#PhotometricInterpretation', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'omero:PhotometricInterpretation', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'RGB' } }, { '@id': 2, - '@type': '%s#Channel' % OME_SCHEMA_URL, + '@type': 'Channel', 'AcquisitionMode': { '@id': 1, - '@type': 'TBD#AcquisitionMode', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'AcquisitionMode', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'WideField' }, 'Color': -16711681, 'ContrastMethod': { '@id': 8, - '@type': 'TBD#ContrastMethod', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'ContrastMethod', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'Fluorescence' }, 'EmissionWavelength': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 470.0 }, 'ExcitationWavelength': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 405.0 @@ -187,14 +189,14 @@ def test_image_pixels_encoder(self, image_pixels): 'Fluor': 'DAPI', 'Illumination': { '@id': 1, - '@type': 'TBD#Illumination', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'IlluminationType', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'Transmitted' }, 'NDFilter': 1.0, 'Name': 'DAPI/405', 'PinholeSize': { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Symbol': 'nm', 'Unit': 'NANOMETER', 'Value': 2.0 @@ -202,16 +204,16 @@ def test_image_pixels_encoder(self, image_pixels): 'PockelCellSetting': 0, 'SamplesPerPixel': 2, 'omero:LogicalChannelId': 2, - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'omero:lookupTable': 'rainbow', 'omero:photometricInterpretation': { '@id': 1, - '@type': 'TBD#PhotometricInterpretation', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'omero:PhotometricInterpretation', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'RGB' } }], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} } diff --git a/tests/unit/test_register_decoder.py b/tests/unit/test_register_decoder.py index 77a17065..6957b2b5 100644 --- a/tests/unit/test_register_decoder.py +++ b/tests/unit/test_register_decoder.py @@ -9,11 +9,11 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_decoder, ROI_SCHEMA_URL +from omero_marshal import get_decoder class TestRegisterDecoder(object): def test_roi_decoder_registered(self): - decoder = get_decoder('%s#ROI' % ROI_SCHEMA_URL) + decoder = get_decoder('ROI') assert decoder is not None diff --git a/tests/unit/test_shape_encoders.py b/tests/unit/test_shape_encoders.py index 73c8416a..e00bad32 100644 --- a/tests/unit/test_shape_encoders.py +++ b/tests/unit/test_shape_encoders.py @@ -9,8 +9,7 @@ # jason@glencoesoftware.com. # -from omero_marshal import get_encoder, SCHEMA_VERSION, ROI_SCHEMA_URL -from omero_marshal import SA_SCHEMA_URL, OME_SCHEMA_URL +from omero_marshal import get_encoder, SCHEMA_VERSION class TestShapeEncoder(object): @@ -18,83 +17,83 @@ class TestShapeEncoder(object): def annotation_data(self): return { 'Annotations': [{ - '@type': '%s#BooleanAnnotation' % SA_SCHEMA_URL, + '@type': 'BooleanAnnotation', 'Description': 'the_description', 'Namespace': 'boolean_annotation', 'Value': True, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#CommentAnnotation' % SA_SCHEMA_URL, + '@type': 'CommentAnnotation', 'Description': 'the_description', 'Namespace': 'comment_annotation', 'Value': 'text_value', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#DoubleAnnotation' % SA_SCHEMA_URL, + '@type': 'DoubleAnnotation', 'Description': 'the_description', 'Namespace': 'double_annotation', 'Value': 1.0, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#LongAnnotation' % SA_SCHEMA_URL, + '@type': 'LongAnnotation', 'Description': 'the_description', 'Namespace': 'long_annotation', 'Value': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#MapAnnotation' % SA_SCHEMA_URL, + '@type': 'MapAnnotation', 'Description': 'the_description', 'Namespace': 'map_annotation', 'Value': [['a', '1'], ['b', '2']], - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#TagAnnotation' % SA_SCHEMA_URL, + '@type': 'TagAnnotation', 'Description': 'the_description', 'Namespace': 'tag_annotation', 'Value': 'tag_value', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#TermAnnotation' % SA_SCHEMA_URL, + '@type': 'TermAnnotation', 'Description': 'the_description', 'Namespace': 'term_annotation', 'Value': 'term_value', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#TimestampAnnotation' % SA_SCHEMA_URL, + '@type': 'TimestampAnnotation', 'Description': 'the_description', 'Namespace': 'timestamp_annotation', 'Value': 1, - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#XmlAnnotation' % SA_SCHEMA_URL, + '@type': 'XmlAnnotation', 'Description': 'the_description', 'Namespace': 'xml_annotation', 'Value': '', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, { - '@type': '%s#FileAnnotation' % SA_SCHEMA_URL, + '@type': 'FileAnnotation', 'Description': 'the_description', 'File': { '@id': 1, - '@type': 'TBD#OriginalFile', + '@type': 'omero:OriginalFile', 'atime': 3, 'ctime': 5, 'hash': '1a0b045d', 'hasher': { '@id': 1, - '@type': 'TBD#ChecksumAlgorithm', - 'omero:details': {'@type': 'TBD#Details'}, + '@type': 'omero:ChecksumAlgorithm', + 'omero:details': {'@type': 'omero:Details'}, 'value': 'Adler-32' }, 'mtime': 4, - 'omero:details': {'@type': 'TBD#Details'}, + 'omero:details': {'@type': 'omero:Details'}, 'path': 'path', 'size': 2, 'mimetype': 'application/octet-stream', 'name': 'name' }, 'Namespace': 'file_annotation', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }] } @@ -105,31 +104,31 @@ def assert_roi(self, roi, has_annotations=False): assert roi['@id'] == 1 assert roi['Name'] == 'the_name' assert roi['Description'] == 'the_description' - assert roi['@type'] == '%s#ROI' % ROI_SCHEMA_URL + assert roi['@type'] == 'ROI' assert roi['omero:details'] == { - '@type': 'TBD#Details', + '@type': 'omero:Details', 'group': { '@id': 1, '@type': - '%s#ExperimenterGroup' % OME_SCHEMA_URL, + 'ExperimenterGroup', 'Description': 'the_description', 'Name': 'the_name', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'owner': { '@id': 1, '@type': - '%s#Experimenter' % OME_SCHEMA_URL, + 'Experimenter', 'Email': 'the_email', 'FirstName': 'the_firstName', 'Institution': 'the_institution', 'LastName': 'the_lastName', 'MiddleName': 'the_middleName', 'UserName': 'the_omeName', - 'omero:details': {'@type': 'TBD#Details'} + 'omero:details': {'@type': 'omero:Details'} }, 'permissions': { - '@type': 'TBD#Permissions', + '@type': 'omero:Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, @@ -144,13 +143,13 @@ def assert_roi(self, roi, has_annotations=False): 'isWorldWrite': True }, 'externalInfo': { - '@type': 'TBD#ExternalInfo', + '@type': 'omero:ExternalInfo', 'EntityId': 123, 'EntityType': 'test', 'Lsid': 'ABCDEF', 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de', 'omero:details': { - '@type': 'TBD#Details' + '@type': 'omero:Details' }, }, } @@ -165,7 +164,7 @@ def assert_shape(self, shape, has_annotations=False): assert shape['StrokeColor'] == 0xffff0000 assert shape['StrokeDashArray'] == 'inherit' assert shape['StrokeWidth'] == { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'PIXEL', 'Symbol': 'pixel', 'Value': 4 @@ -173,7 +172,7 @@ def assert_shape(self, shape, has_annotations=False): assert shape['Text'] == 'the_text' assert shape['FontFamily'] == 'cursive' assert shape['FontSize'] == { - '@type': 'TBD#LengthI', + '@type': 'omero:LengthI', 'Unit': 'POINT', 'Symbol': 'pt', 'Value': 12 @@ -187,7 +186,7 @@ def assert_shape(self, shape, has_annotations=False): assert shape['TheT'] == 2 assert shape['TheC'] == 1 self.assert_transform(shape['Transform']) - assert shape['omero:details'] == {'@type': 'TBD#Details'} + assert shape['omero:details'] == {'@type': 'omero:Details'} if not has_annotations: assert shape.get('annotations') is None else: @@ -196,7 +195,7 @@ def assert_shape(self, shape, has_annotations=False): def assert_ellipse(self, ellipse, has_annotations=False): self.assert_shape(ellipse, has_annotations=has_annotations) assert ellipse['@id'] == 1 - assert ellipse['@type'] == '%s#Ellipse' % ROI_SCHEMA_URL + assert ellipse['@type'] == 'Ellipse' assert ellipse['X'] == 1.0 assert ellipse['Y'] == 2.0 assert ellipse['RadiusX'] == 3.0 @@ -205,14 +204,14 @@ def assert_ellipse(self, ellipse, has_annotations=False): def assert_rectangle(self, rectangle): self.assert_shape(rectangle) assert rectangle['@id'] == 2 - assert rectangle['@type'] == '%s#Rectangle' % ROI_SCHEMA_URL + assert rectangle['@type'] == 'Rectangle' assert rectangle['X'] == 1.0 assert rectangle['Y'] == 2.0 assert rectangle['Width'] == 3.0 assert rectangle['Height'] == 4.0 def assert_transform(self, transform): - assert transform['@type'] == '%s#AffineTransform' % ROI_SCHEMA_URL + assert transform['@type'] == 'AffineTransform' assert transform['A00'] == 1.0 assert transform['A10'] == 0.0 assert transform['A01'] == 0.0 @@ -220,7 +219,7 @@ def assert_transform(self, transform): assert transform['A02'] == 0.0 assert transform['A12'] == 0.0 if SCHEMA_VERSION != '2015-01': - assert transform['omero:details'] == {'@type': 'TBD#Details'} + assert transform['omero:details'] == {'@type': 'omero:Details'} class TestEllipseEncoder(TestShapeEncoder): @@ -251,7 +250,7 @@ def test_encoder(self, point): v = encoder.encode(point) self.assert_shape(v) assert v['@id'] == 3 - assert v['@type'] == '%s#Point' % ROI_SCHEMA_URL + assert v['@type'] == 'Point' assert v['X'] == 1.0 assert v['Y'] == 2.0 @@ -263,7 +262,7 @@ def test_encoder(self, label): v = encoder.encode(label) self.assert_shape(v) assert v['@id'] == 7 - assert v['@type'] == '%s#Label' % ROI_SCHEMA_URL + assert v['@type'] == 'Label' assert v['X'] == 1.0 assert v['Y'] == 2.0 @@ -275,7 +274,7 @@ def test_encoder(self, polyline): v = encoder.encode(polyline) self.assert_shape(v) assert v['@id'] == 4 - assert v['@type'] == '%s#Polyline' % ROI_SCHEMA_URL + assert v['@type'] == 'Polyline' assert v['Points'] == '0,0 1,2 3,5' if SCHEMA_VERSION != '2015-01': assert v['MarkerStart'] == 'Arrow' @@ -289,7 +288,7 @@ def test_encoder(self, polygon): v = encoder.encode(polygon) self.assert_shape(v) assert v['@id'] == 5 - assert v['@type'] == '%s#Polygon' % ROI_SCHEMA_URL + assert v['@type'] == 'Polygon' assert v['Points'] == '0,0 1,2 3,5' @@ -300,7 +299,7 @@ def test_encoder(self, line): v = encoder.encode(line) self.assert_shape(v) assert v['@id'] == 6 - assert v['@type'] == '%s#Line' % ROI_SCHEMA_URL + assert v['@type'] == 'Line' assert v['X1'] == 0.0 assert v['Y1'] == 0.0 assert v['X2'] == 1.0 @@ -338,7 +337,7 @@ def test_encoder(self, mask): v = encoder.encode(mask) self.assert_shape(v) assert v['@id'] == 8 - assert v['@type'] == '%s#Mask' % ROI_SCHEMA_URL + assert v['@type'] == 'Mask' assert v['X'] == 0.0 assert v['Y'] == 0.0 assert v['Width'] == 1.0