def marshal_objects(objects):
    """ Marshal objects using omero_marshal """
    expected = []
    for obj in objects:
        encoder = get_encoder(obj.__class__)
        expected.append(encoder.encode(obj))
    return expected
Example #2
0
    def get(self, request, object_id, conn=None, **kwargs):
        """Simply GET a single Object and marshal it or 404 if not found."""
        opts = self.get_opts(request)
        object_id = int(object_id)
        query, params, wrapper = conn.buildQuery(self.OMERO_TYPE, [object_id],
                                                 opts=opts)
        # Allow subclasses to access the result object
        self.result = conn.getQueryService().findByQuery(
            query, params, conn.SERVICE_OPTS)

        if self.result is None:
            raise NotFoundError("%s %s not found" %
                                (self.OMERO_TYPE, object_id))
        encoder = get_encoder(self.result.__class__)
        marshalled = encoder.encode(self.result)

        # Optionally lookup child counts
        child_count = request.GET.get("childCount", False) == "true"
        if child_count and wrapper.LINK_CLASS:
            counts = get_child_counts(conn, wrapper.LINK_CLASS, [object_id])
            ch_count = counts[object_id] if object_id in counts else 0
            marshalled["omero:childCount"] = ch_count

        self.add_data(marshalled, request, conn, self.urls, **kwargs)
        return {"data": marshalled}
 def test_base_decoder(self, roi):
     encoder = get_encoder(roi.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(roi)
     v = decoder.decode(v)
     self.assert_roi(v)
     self.assert_externalInfo(v.details.externalInfo)
Example #4
0
 def test_base_decoder(self, roi):
     encoder = get_encoder(roi.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(roi)
     v = decoder.decode(v)
     self.assert_roi(v)
     self.assert_externalInfo(v.details.externalInfo)
 def test_project_with_datasets_encoder(self, project_with_datasets):
     encoder = get_encoder(project_with_datasets.__class__)
     v = encoder.encode(project_with_datasets)
     assert v == {
         '@id':
         1,
         '@type':
         '%s#Project' % OME_SCHEMA_URL,
         'Name':
         'the_name',
         'Description':
         'the_description',
         'omero:details': {
             '@type': 'TBD#Details'
         },
         'Datasets': [{
             '@id': 1,
             '@type': '%s#Dataset' % OME_SCHEMA_URL,
             'Name': 'dataset_name_1',
             'Description': 'dataset_description_1',
             'omero:details': {
                 '@type': 'TBD#Details'
             }
         }, {
             '@id': 2,
             '@type': '%s#Dataset' % OME_SCHEMA_URL,
             'Name': 'dataset_name_2',
             'Description': 'dataset_description_2',
             'omero:details': {
                 '@type': 'TBD#Details'
             }
         }]
     }
 def test_roi_with_shapes_and_annotations(self,
                                          roi_with_shapes_and_annotations):
     encoder = get_encoder(roi_with_shapes_and_annotations.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(roi_with_shapes_and_annotations)
     v = decoder.decode(v)
     self.assert_roi_with_shapes(v, has_annotations=True)
 def test_base_encoder_with_unloaded_details_children(
         self, roi_with_unloaded_details_children):
     encoder = get_encoder(roi_with_unloaded_details_children.__class__)
     v = encoder.encode(roi_with_unloaded_details_children)
     assert v == {
         '@id': 1L,
         '@type': 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#ROI',
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {
             '@type': 'TBD#Details',
             'owner': {
                 '@id': 1L,
                 '@type':
                     'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                     '#Experimenter'
             },
             'group': {
                 '@id': 1L,
                 '@type':
                     'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                     '#ExperimenterGroup'
             },
             'permissions': {
                 '@type': 'TBD#Permissions',
                 'canAnnotate': True,
                 'canDelete': True,
                 'canEdit': True,
                 'canLink': True,
                 'perm': 'rwrwrw'
             }
         }
     }
 def test_project_decoder(self, project):
     encoder = get_encoder(project.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(project)
     v = decoder.decode(v)
     self.assert_project(v)
     assert v.sizeOfDatasetLinks() == 0
 def test_encoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     v = encoder.encode(polygon)
     self.assert_shape(v)
     assert v['@id'] == 5L
     assert v['@type'] == '%s#Polygon' % ROI_SCHEMA_URL
     assert v['Points'] == '0,0 1,2 3,5'
 def test_roi_with_shapes_and_annotations(
         self, roi_with_shapes_and_annotations):
     encoder = get_encoder(roi_with_shapes_and_annotations.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(roi_with_shapes_and_annotations)
     v = decoder.decode(v)
     self.assert_roi_with_shapes(v, has_annotations=True)
Example #11
0
 def test_decoder(self, mask):
     encoder = get_encoder(mask.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(mask)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 8
Example #12
0
def eventContextMarshal(event_context):
    """
    Marshals the omero::sys::EventContext as a dict.

    @param event_context:   omero::sys::EventContext
    @return:                Dict
    """

    ctx = {}
    for a in [
        "shareId",
        "sessionId",
        "sessionUuid",
        "userId",
        "userName",
        "sudoerId",
        "sudoerName",
        "groupId",
        "groupName",
        "isAdmin",
        "eventId",
        "eventType",
        "memberOfGroups",
        "leaderOfGroups",
        "adminPrivileges",
    ]:
        if hasattr(event_context, a):
            ctx[a] = unwrap(getattr(event_context, a))

    perms = event_context.groupPermissions
    encoder = get_encoder(perms.__class__)
    ctx["groupPermissions"] = encoder.encode(perms)

    return ctx
Example #13
0
 def test_well_color_decoder(self, color, well):
     """Test different combinations of r, g, b, a."""
     well.red = rint(color[0])
     well.green = rint(color[1])
     well.blue = rint(color[2])
     well.alpha = rint(color[3])
     encoder = get_encoder(well.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(well)
     # Check we get the expected Integer
     assert v.get('Color') == color[4]
     v = decoder.decode(v)
     # If red is None, all are None
     if color[0] is None:
         assert v.red is None
         assert v.green is None
         assert v.blue is None
         assert v.alpha is None
     elif color[3] is None:
         # alpha None -> 255 by default
         assert v.red.val == color[0]
         assert v.green.val == color[1]
         assert v.blue.val == color[2]
         assert v.alpha.val == 255
     else:
         # Otherwise, all preserved
         assert v.red.val == color[0]
         assert v.green.val == color[1]
         assert v.blue.val == color[2]
         assert v.alpha.val == color[3]
Example #14
0
 def test_project_decoder(self, project):
     encoder = get_encoder(project.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(project)
     v = decoder.decode(v)
     self.assert_project(v)
     assert v.sizeOfDatasetLinks() == 0
Example #15
0
 def test_screen_decoder(self, screen):
     encoder = get_encoder(screen.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(screen)
     v = decoder.decode(v)
     self.assert_screen(v)
     assert v.sizeOfPlateLinks() == 0
Example #16
0
    def test_project_validation(self, user_A):
        """
        Test to demonstrate details bug on encode->decode.

        Test illustrates the ValidationException we see when
        Project is encoded to dict then decoded back to Project
        and saved.
        No exception is seen if the original Project is simply
        saved without encode & decode OR if the details are unloaded
        before saving
        """
        conn = get_connection(user_A)
        project = ProjectI()
        project.name = rstring('test_project_validation')
        project = conn.getUpdateService().saveAndReturnObject(project)

        # Saving original Project again is OK
        conn.getUpdateService().saveObject(project)

        # encode and decode before Save raises Validation Exception
        project_json = get_encoder(project.__class__).encode(project)
        decoder = get_decoder(project_json['@type'])
        p = decoder.decode(project_json)
        with pytest.raises(ValidationException):
            conn.getUpdateService().saveObject(p)

        p = decoder.decode(project_json)
        # Unloading details allows Save without exception
        p.unloadDetails()
        conn.getUpdateService().saveObject(p)
 def test_project_with_datasets_encoder(self, project_with_datasets):
     encoder = get_encoder(project_with_datasets.__class__)
     v = encoder.encode(project_with_datasets)
     assert v == {
         "@id": 1L,
         "@type": "%s#Project" % OME_SCHEMA_URL,
         "Name": "the_name",
         "Description": "the_description",
         "omero:details": {"@type": "TBD#Details"},
         "Datasets": [
             {
                 "@id": 1L,
                 "@type": "%s#Dataset" % OME_SCHEMA_URL,
                 "Name": "dataset_name_1",
                 "Description": "dataset_description_1",
                 "omero:details": {"@type": "TBD#Details"},
             },
             {
                 "@id": 2L,
                 "@type": "%s#Dataset" % OME_SCHEMA_URL,
                 "Name": "dataset_name_2",
                 "Description": "dataset_description_2",
                 "omero:details": {"@type": "TBD#Details"},
             },
         ],
     }
Example #18
0
    def encode_well(self, obj):
        obj.details.owner.unloadDetails()
        obj.details.group.unloadDetails()
        obj.details.creationEvent.unloadDetails()
        obj.details.creationEvent.type.unloadDetails()
        obj.details.updateEvent.unloadDetails()
        obj.details.updateEvent.type.unloadDetails()
        if obj.isWellSamplesLoaded() and obj.sizeOfWellSamples() > 0:
            for wellsample in obj.copyWellSamples():
                wellsample.unloadDetails()
                image = wellsample.image
                if image is not None and image.isLoaded():
                    image.unloadDetails()
                    self.unload_annotation_details(image)
                    if image.isPixelsLoaded():
                        pixels = image.getPrimaryPixels()
                        pixels.unloadDetails()
                        if pixels.isChannelsLoaded():
                            for channel in pixels.copyChannels():
                                channel.unloadDetails()
                                self.unload_annotation_details(channel)
        self.unload_annotation_details(obj)

        encoder = get_encoder(obj.__class__)
        v = encoder.encode(obj)
        return v
Example #19
0
 def test_encoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     v = encoder.encode(polygon)
     self.assert_shape(v)
     assert v['@id'] == 5
     assert v['@type'] == '%s#Polygon' % ROI_SCHEMA_URL
     assert v['Points'] == '0,0 1,2 3,5'
 def test_project_with_dataset_encoder(self, project_with_datasets):
     encoder = get_encoder(project_with_datasets.__class__)
     v = encoder.encode(project_with_datasets)
     assert v == {
         '@id': 1L,
         '@type':
             'http://www.openmicroscopy.org/Schemas/OME/2015-01#Project',
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {'@type': 'TBD#Details'},
         'Datasets': [{
             '@id': 1L,
             '@type':
                 'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                 '#Dataset',
             'Name': 'dataset_name_1',
             'Description': 'dataset_description_1',
             'omero:details': {'@type': 'TBD#Details'}
         }, {
             '@id': 2L,
             '@type':
                 'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                 '#Dataset',
             'Name': 'dataset_name_2',
             'Description': 'dataset_description_2',
             'omero:details': {'@type': 'TBD#Details'}
         }]
     }
Example #21
0
def rois_by_plane(request, image_id, the_z, the_t, z_end=None, t_end=None,
                  conn=None, **kwargs):
    """
    Get ROIs with all Shapes where any Shapes are on the given Z and T plane.

    Includes Shapes where Z or T are null.
    If z_end or t_end are not None, we filter by any shape within the
    range (inclusive of z/t_end)
    """
    query_service = conn.getQueryService()

    params = omero.sys.ParametersI()
    params.addId(image_id)
    filter = omero.sys.Filter()
    filter.offset = rint(request.GET.get("offset", 0))
    limit = min(MAX_LIMIT, long(request.GET.get("limit", MAX_LIMIT)))
    filter.limit = rint(limit)
    params.theFilter = filter

    where_z = "shapes.theZ = %s or shapes.theZ is null" % the_z
    where_t = "shapes.theT = %s or shapes.theT is null" % the_t
    if z_end is not None:
        where_z = """(shapes.theZ >= %s and shapes.theZ <= %s)
            or shapes.theZ is null""" % (the_z, z_end)
    if t_end is not None:
        where_t = """(shapes.theT >= %s and shapes.theT <= %s)
            or shapes.theT is null""" % (the_t, t_end)

    filter_query = """
        select distinct(roi) from Roi roi
        join roi.shapes as shapes
        where (%s) and (%s)
        and roi.image.id = :id
    """ % (where_z, where_t)

    # We want to load ALL shapes for the ROIs (omero-marshal fails if
    # any shapes are None) but we want to filter by Shape so we use an inner
    # query to get the ROI IDs filtered by Shape.
    query = """
        select roi from Roi roi
        join fetch roi.details.owner join fetch roi.details.creationEvent
        left outer join fetch roi.shapes
        where roi.id in (%s) order by roi.id
    """ % (filter_query)

    rois = query_service.findAllByQuery(query, params, conn.SERVICE_OPTS)
    marshalled = []
    for r in rois:
        encoder = omero_marshal.get_encoder(r.__class__)
        if encoder is not None:
            marshalled.append(encoder.encode(r))

    # Modify query to only select count() and NOT paginate
    query = filter_query.replace("distinct(roi)", "count(distinct roi)")
    params = omero.sys.ParametersI()
    params.addId(image_id)
    result = query_service.projection(query, params, conn.SERVICE_OPTS)
    meta = {"totalCount": result[0][0].val}

    return JsonResponse({'data': marshalled, 'meta': meta})
 def test_base_encoder_with_unloaded_details_children(
         self, roi_with_unloaded_details_children):
     encoder = get_encoder(roi_with_unloaded_details_children.__class__)
     v = encoder.encode(roi_with_unloaded_details_children)
     assert v == {
         '@id': 1L,
         '@type': 'http://www.openmicroscopy.org/Schemas/ROI/2015-01#ROI',
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {
             '@type': 'TBD#Details',
             'owner': {
                 '@id':
                 1L,
                 '@type':
                 'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                 '#Experimenter'
             },
             'group': {
                 '@id':
                 1L,
                 '@type':
                 'http://www.openmicroscopy.org/Schemas/OME/2015-01'
                 '#ExperimenterGroup'
             },
             'permissions': {
                 '@type': 'TBD#Permissions',
                 'canAnnotate': True,
                 'canDelete': True,
                 'canEdit': True,
                 'canLink': True,
                 'perm': 'rwrwrw'
             }
         }
     }
 def test_screen_decoder(self, screen):
     encoder = get_encoder(screen.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(screen)
     v = decoder.decode(v)
     self.assert_screen(v)
     assert v.sizeOfPlateLinks() == 0
Example #24
0
 def test_base_encoder(self, roi):
     encoder = get_encoder(roi.__class__)
     v = encoder.encode(roi)
     assert v == {
         '@id': 1L,
         '@type': '%s#ROI' % ROI_SCHEMA_URL,
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {
             '@type': 'TBD#Details',
             'group': {
                 '@id': 1L,
                 '@type': '%s#ExperimenterGroup' % OME_SCHEMA_URL,
                 'Description': 'the_description',
                 'Name': 'the_name',
                 'omero:details': {
                     '@type': 'TBD#Details'
                 }
             },
             'owner': {
                 '@id': 1L,
                 '@type': '%s#Experimenter' % OME_SCHEMA_URL,
                 'Email': 'the_email',
                 'FirstName': 'the_firstName',
                 'Institution': 'the_institution',
                 'LastName': 'the_lastName',
                 'MiddleName': 'the_middleName',
                 'UserName': '******',
                 'omero:details': {
                     '@type': 'TBD#Details'
                 }
             },
             'permissions': {
                 '@type': 'TBD#Permissions',
                 'canAnnotate': True,
                 'canDelete': True,
                 'canEdit': True,
                 'canLink': True,
                 'perm': 'rwrwrw',
                 'isGroupAnnotate': True,
                 'isGroupRead': True,
                 'isGroupWrite': True,
                 'isUserRead': True,
                 'isUserWrite': True,
                 'isWorldRead': True,
                 'isWorldWrite': True
             },
             'externalInfo': {
                 '@type': 'TBD#ExternalInfo',
                 'EntityId': 123,
                 'EntityType': 'test',
                 'Lsid': 'ABCDEF',
                 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de',
                 'omero:details': {
                     '@type': 'TBD#Details'
                 },
             },
         }
     }
Example #25
0
 def test_encoder(self, label):
     encoder = get_encoder(label.__class__)
     v = encoder.encode(label)
     self.assert_shape(v)
     assert v['@id'] == 7
     assert v['@type'] == '%s#Label' % ROI_SCHEMA_URL
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
Example #26
0
 def test_encoder(self, point):
     encoder = get_encoder(point.__class__)
     v = encoder.encode(point)
     self.assert_shape(v)
     assert v['@id'] == 3
     assert v['@type'] == '%s#Point' % ROI_SCHEMA_URL
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
 def test_decoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(polygon)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 5L
     assert v.points.val == '0,0 1,2 3,5'
 def test_encoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     v = encoder.encode(polygon)
     self.assert_shape(v)
     assert v['@id'] == 5L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Polygon'
     assert v['Points'] == '0,0 1,2 3,5'
 def test_encoder(self, label):
     encoder = get_encoder(label.__class__)
     v = encoder.encode(label)
     self.assert_shape(v)
     assert v['@id'] == 7L
     assert v['@type'] == '%s#Label' % ROI_SCHEMA_URL
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
Example #30
0
 def test_encoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     v = encoder.encode(polygon)
     self.assert_shape(v)
     assert v['@id'] == 5L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Polygon'
     assert v['Points'] == '0,0 1,2 3,5'
 def test_decoder(self, polygon):
     encoder = get_encoder(polygon.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(polygon)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 5L
     assert v.points.val == '0,0 1,2 3,5'
 def test_encoder(self, point):
     encoder = get_encoder(point.__class__)
     v = encoder.encode(point)
     self.assert_shape(v)
     assert v['@id'] == 3L
     assert v['@type'] == '%s#Point' % ROI_SCHEMA_URL
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
Example #33
0
 def test_encoder(self, label):
     encoder = get_encoder(label.__class__)
     v = encoder.encode(label)
     self.assert_shape(v)
     assert v['@id'] == 7L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Label'
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
Example #34
0
 def test_encoder(self, point):
     encoder = get_encoder(point.__class__)
     v = encoder.encode(point)
     self.assert_shape(v)
     assert v['@id'] == 3L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Point'
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
 def test_details_encoder(self, details):
     encoder = get_encoder(details.__class__)
     v = encoder.encode(details)
     assert v == {
         '@type': 'TBD#Details',
         'permissions': self.permissions_json(),
         'owner': self.experimenter_json(),
         'group': self.experimenter_group_json()
     }
 def test_encoder(self, point):
     encoder = get_encoder(point.__class__)
     v = encoder.encode(point)
     self.assert_shape(v)
     assert v['@id'] == 3L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Point'
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
 def test_details_encoder(self, details):
     encoder = get_encoder(details.__class__)
     v = encoder.encode(details)
     assert v == {
         '@type': 'TBD#Details',
         'permissions': self.permissions_json(),
         'owner': self.experimenter_json(),
         'group': self.experimenter_group_json()
     }
Example #38
0
 def test_permissions_cannot_delete(self, permissions_cannot_delete):
     encoder = get_encoder(permissions_cannot_delete.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(permissions_cannot_delete)
     v = decoder.decode(v)
     assert v.canLink()
     assert v.canEdit()
     assert not v.canDelete()
     assert v.canAnnotate()
 def test_encoder(self, label):
     encoder = get_encoder(label.__class__)
     v = encoder.encode(label)
     self.assert_shape(v)
     assert v['@id'] == 7L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Label'
     assert v['X'] == 1.0
     assert v['Y'] == 2.0
Example #40
0
 def test_permissions_cannot_delete(self, permissions_cannot_delete):
     encoder = get_encoder(permissions_cannot_delete.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(permissions_cannot_delete)
     v = decoder.decode(v)
     assert v.canLink()
     assert v.canEdit()
     assert not v.canDelete()
     assert v.canAnnotate()
 def test_encoder(self, polyline):
     encoder = get_encoder(polyline.__class__)
     v = encoder.encode(polyline)
     self.assert_shape(v)
     assert v['@id'] == 4L
     assert v['@type'] == '%s#Polyline' % ROI_SCHEMA_URL
     assert v['Points'] == '0,0 1,2 3,5'
     if SCHEMA_VERSION != '2015-01':
         assert v['MarkerStart'] == 'Arrow'
         assert v['MarkerEnd'] == 'Arrow'
Example #42
0
 def test_base_encoder_unloaded_details(self, roi):
     roi.unloadDetails()
     encoder = get_encoder(roi.__class__)
     v = encoder.encode(roi)
     assert v == {
         '@id': 1L,
         '@type': '%s#ROI' % ROI_SCHEMA_URL,
         'Name': 'the_name',
         'Description': 'the_description'
     }
Example #43
0
 def test_base_encoder_unloaded_details(self, roi):
     roi.unloadDetails()
     encoder = get_encoder(roi.__class__)
     v = encoder.encode(roi)
     assert v == {
         '@id': 1L,
         '@type': '%s#ROI' % ROI_SCHEMA_URL,
         'Name': 'the_name',
         'Description': 'the_description'
     }
Example #44
0
 def test_encoder(self, mask):
     encoder = get_encoder(mask.__class__)
     v = encoder.encode(mask)
     self.assert_shape(v)
     assert v['@id'] == 8
     assert v['@type'] == '%s#Mask' % ROI_SCHEMA_URL
     assert v['X'] == 0.0
     assert v['Y'] == 0.0
     assert v['Width'] == 1.0
     assert v['Height'] == 2.0
 def test_project_encoder(self, project):
     encoder = get_encoder(project.__class__)
     v = encoder.encode(project)
     assert v == {
         "@id": 1L,
         "@type": "%s#Project" % OME_SCHEMA_URL,
         "Name": "the_name",
         "Description": "the_description",
         "omero:details": {"@type": "TBD#Details"},
     }
 def test_project_encoder(self, project):
     encoder = get_encoder(project.__class__)
     v = encoder.encode(project)
     assert v == {
         '@id': 1L,
         '@type': '%s#Project' % OME_SCHEMA_URL,
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {'@type': 'TBD#Details'}
     }
Example #47
0
 def test_encoder(self, polyline):
     encoder = get_encoder(polyline.__class__)
     v = encoder.encode(polyline)
     self.assert_shape(v)
     assert v['@id'] == 4
     assert v['@type'] == '%s#Polyline' % ROI_SCHEMA_URL
     assert v['Points'] == '0,0 1,2 3,5'
     if SCHEMA_VERSION != '2015-01':
         assert v['MarkerStart'] == 'Arrow'
         assert v['MarkerEnd'] == 'Arrow'
Example #48
0
 def test_base_encoder(self, roi):
     encoder = get_encoder(roi.__class__)
     v = encoder.encode(roi)
     assert v == {
         '@id': 1L,
         '@type': '%s#ROI' % ROI_SCHEMA_URL,
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {
             '@type': 'TBD#Details',
             'group': {
                 '@id': 1L,
                 '@type': '%s#ExperimenterGroup' % OME_SCHEMA_URL,
                 'Description': 'the_description',
                 'Name': 'the_name',
                 'omero:details': {'@type': 'TBD#Details'}
             },
             'owner': {
                 '@id': 1L,
                 '@type': '%s#Experimenter' % OME_SCHEMA_URL,
                 'Email': 'the_email',
                 'FirstName': 'the_firstName',
                 'Institution': 'the_institution',
                 'LastName': 'the_lastName',
                 'MiddleName': 'the_middleName',
                 'UserName': '******',
                 'omero:details': {'@type': 'TBD#Details'}
             },
             'permissions': {
                 '@type': 'TBD#Permissions',
                 'canAnnotate': True,
                 'canDelete': True,
                 'canEdit': True,
                 'canLink': True,
                 'perm': 'rwrwrw',
                 'isGroupAnnotate': True,
                 'isGroupRead': True,
                 'isGroupWrite': True,
                 'isUserRead': True,
                 'isUserWrite': True,
                 'isWorldRead': True,
                 'isWorldWrite': True
             },
             'externalInfo': {
                 '@type': 'TBD#ExternalInfo',
                 'EntityId': 123,
                 'EntityType': 'test',
                 'Lsid': 'ABCDEF',
                 'Uuid': 'f90a1fd5-275c-4d14-82b3-87b5ef0f07de',
                 'omero:details': {
                     '@type': 'TBD#Details'
                 },
             },
         }
     }
 def test_decoder(self, point):
     encoder = get_encoder(point.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(point)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 3L
     assert v.cx.__class__ is RDoubleI
     assert v.cx.val == 1.0
     assert v.cy.__class__ is RDoubleI
     assert v.cy.val == 2.0
    def test_project_with_datasets_and_images_decoder(
            self, project_with_datasets_and_images):
        encoder = get_encoder(project_with_datasets_and_images.__class__)
        decoder = get_decoder(encoder.TYPE)
        v = encoder.encode(project_with_datasets_and_images)
        v = decoder.decode(v)
        assert v.id.val == 1L
        assert v.name.val == 'the_name'
        assert v.description.val == 'the_description'
        assert v.sizeOfDatasetLinks() == 2

        dataset_1, dataset_2 = v.linkedDatasetList()

        assert dataset_1.id.val == 1L
        assert dataset_1.name.val == 'dataset_name_1'
        assert dataset_1.description.val == 'dataset_description_1'
        image_1, image_2 = dataset_1.linkedImageList()
        assert image_1.id.val == 1L
        assert image_1.acquisitionDate.val == 1L
        assert image_1.archived.val is False
        assert image_1.description.val == 'image_description_1'
        assert image_1.name.val == 'image_name_1'
        assert image_1.partial.val is False
        assert image_1.format.id.val == 1L
        assert image_1.format.value.val == 'PNG'
        assert image_2.id.val == 2L
        assert image_2.acquisitionDate.val == 1L
        assert image_2.archived.val is False
        assert image_2.description.val == 'image_description_2'
        assert image_2.name.val == 'image_name_2'
        assert image_2.partial.val is False
        assert image_2.format.id.val == 1L
        assert image_2.format.value.val == 'PNG'

        assert dataset_2.id.val == 2L
        assert dataset_2.name.val == 'dataset_name_2'
        assert dataset_2.description.val == 'dataset_description_2'
        image_3, image_4 = dataset_2.linkedImageList()
        assert image_3.id.val == 3L
        assert image_3.acquisitionDate.val == 1L
        assert image_3.archived.val is False
        assert image_3.description.val == 'image_description_3'
        assert image_3.name.val == 'image_name_3'
        assert image_3.partial.val is False
        assert image_3.format.id.val == 1L
        assert image_3.format.value.val == 'PNG'
        assert image_4.id.val == 4L
        assert image_4.acquisitionDate.val == 1L
        assert image_4.archived.val is False
        assert image_4.description.val == 'image_description_4'
        assert image_4.name.val == 'image_name_4'
        assert image_4.partial.val is False
        assert image_4.format.id.val == 1L
        assert image_4.format.value.val == 'PNG'
 def test_decoder(self, polyline):
     encoder = get_encoder(polyline.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(polyline)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 4L
     assert v.points.val == '0,0 1,2 3,5'
     if SCHEMA_VERSION != '2015-01':
         assert v.markerStart.val == 'Arrow'
         assert v.markerEnd.val == 'Arrow'
 def test_decoder(self, label):
     encoder = get_encoder(label.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(label)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 7L
     assert v.x.__class__ is RDoubleI
     assert v.x.val == 1.0
     assert v.y.__class__ is RDoubleI
     assert v.y.val == 2.0
 def test_decoder(self, point):
     encoder = get_encoder(point.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(point)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 3L
     assert v.cx.__class__ is RDoubleI
     assert v.cx.val == 1.0
     assert v.cy.__class__ is RDoubleI
     assert v.cy.val == 2.0
 def test_decoder(self, opt_unit_label):
     encoder = get_encoder(opt_unit_label.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(opt_unit_label)
     v = decoder.decode(v)
     self.assert_shape(v, has_unit_information=False)
     assert v.id.val == 7L
     assert v.x.__class__ is RDoubleI
     assert v.x.val == 1.0
     assert v.y.__class__ is RDoubleI
     assert v.y.val == 2.0
 def test_screen_with_plates_decoder(self, screen_with_plates):
     encoder = get_encoder(screen_with_plates.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(screen_with_plates)
     v = decoder.decode(v)
     self.assert_screen(v)
     assert v.id.val == 4L
     assert v.sizeOfPlateLinks() == 2
     plate_1, plate_2 = v.linkedPlateList()
     self.assert_plate(plate_1, 5L)
     self.assert_plate(plate_2, 6L)
 def test_decoder(self, opt_unit_label):
     encoder = get_encoder(opt_unit_label.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(opt_unit_label)
     v = decoder.decode(v)
     self.assert_shape(v, has_unit_information=False)
     assert v.id.val == 7L
     assert v.x.__class__ is RDoubleI
     assert v.x.val == 1.0
     assert v.y.__class__ is RDoubleI
     assert v.y.val == 2.0
 def test_project_encoder(self, project):
     encoder = get_encoder(project.__class__)
     v = encoder.encode(project)
     assert v == {
         '@id': 1L,
         '@type':
             'http://www.openmicroscopy.org/Schemas/OME/2015-01#Project',
         'Name': 'the_name',
         'Description': 'the_description',
         'omero:details': {'@type': 'TBD#Details'}
     }
 def test_encoder(self, line):
     encoder = get_encoder(line.__class__)
     v = encoder.encode(line)
     self.assert_shape(v)
     assert v['@id'] == 6L
     assert v['@type'] == \
         'http://www.openmicroscopy.org/Schemas/ROI/2015-01#Line'
     assert v['X1'] == 0.0
     assert v['Y1'] == 0.0
     assert v['X2'] == 1.0
     assert v['Y2'] == 2.0
 def test_decoder(self, label):
     encoder = get_encoder(label.__class__)
     decoder = get_decoder(encoder.TYPE)
     v = encoder.encode(label)
     v = decoder.decode(v)
     self.assert_shape(v)
     assert v.id.val == 7L
     assert v.x.__class__ is RDoubleI
     assert v.x.val == 1.0
     assert v.y.__class__ is RDoubleI
     assert v.y.val == 2.0