コード例 #1
0
    def test_plot_profile(self):
        script_id = super(TestAnalysisScripts, self).get_script(plot_profile)
        assert script_id > 0

        client, user = self.new_client_and_user()

        # create a test image
        size_t = 3
        size_x = 100
        size_y = 100
        session = client.getSession()
        image = self.create_test_image(size_x, size_y, 1, 2, size_t, session)
        image_id = image.id.val
        roi = create_roi(image_id, 0, size_x / 2, 0, size_y / 2, size_t, True)
        session.getUpdateService().saveAndReturnObject(roi)
        image_ids = []
        image_ids.append(omero.rtypes.rlong(image_id))
        args = {
            "Data_Type": omero.rtypes.rstring("Image"),
            "IDs": omero.rtypes.rlist(image_ids),
            "Line_Width": omero.rtypes.rint(2),
            "Sum_or_Average": omero.rtypes.rstring("Average")
        }
        ann = run_script(client, script_id, args, "Line_Data")
        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #2
0
    def test_movie_figure(self, all_parameters):

        sid = super(TestFigureExportScripts, self).get_script(movie_figure)
        assert sid > 0

        client, user = self.new_client_and_user()

        # create several test images in a dataset
        dataset = self.make_dataset("movieFig-test", client=client)
        project = self.make_project("movieFig-test", client=client)
        self.link(project, dataset, client=client)

        # put some images in dataset
        session = client.getSession()
        image_ids = []
        for i in range(2):
            image = self.create_test_image(256, 256, 5, 3, 20, session)
            image_ids.append(omero.rtypes.rlong(image.id.val))
            self.link(dataset, image, client=client)

        red = omero.rtypes.rint(16711680)
        t_indexes = [
            omero.rtypes.rint(0),
            omero.rtypes.rint(1),
            omero.rtypes.rint(5),
            omero.rtypes.rint(10),
            omero.rtypes.rint(15)
        ]

        if all_parameters:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids),
                "T_Indexes": omero.rtypes.rlist(t_indexes),
                "Z_Start": omero.rtypes.rint(1),
                "Z_End": omero.rtypes.rint(3),
                "Width": omero.rtypes.rint(150),
                "Height": omero.rtypes.rint(150),
                "Image_Labels": omero.rtypes.rstring("Datasets"),
                "Algorithm": omero.rtypes.rstring("Mean Intensity"),
                "Stepping": omero.rtypes.rint(1),
                "Scalebar": omero.rtypes.rint(10),
                "Format": omero.rtypes.rstring("PNG"),
                "Figure_Name": omero.rtypes.rstring("movieFigureTest"),
                "TimeUnits": omero.rtypes.rstring("MINS"),
                "Overlay_Colour": red,
            }
        else:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids),
                "T_Indexes": omero.rtypes.rlist(t_indexes)
            }
        ann = run_script(client, sid, args, "File_Annotation")

        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #3
0
    def test_thumbnail_figure(self, data_type, all_parameters):

        sid = super(TestFigureExportScripts, self).get_script(thumbnail_figure)
        assert sid > 0

        client, user = self.new_client_and_user()

        # create several test images in a dataset
        dataset = self.make_dataset("thumbnailFigure-test", client=client)

        # make some tags
        tag_ids = []
        session = client.getSession()
        for t in range(5):
            tag = omero.model.TagAnnotationI()
            tag.setTextValue(omero.rtypes.rstring("TestTag_%s" % t))
            tag = session.getUpdateService().saveAndReturnObject(tag)
            tag_ids.append(tag.id)

        # put some images in dataset
        image_ids = []
        for i in range(2):
            # x,y,z,c,t
            image = self.create_test_image(100, 100, 1, 1, 1, session)
            image_ids.append(omero.rtypes.rlong(image.id.val))
            self.link(dataset, image, client=client)

            # add tag
            t = i % 5
            tag = omero.model.TagAnnotationI(tag_ids[t].val, False)
            self.link(image, tag, client=client)

        dataset_ids = [omero.rtypes.rlong(dataset.id.val)]
        ids = image_ids
        if data_type == "Dataset":
            ids = dataset_ids
        if all_parameters:
            args = {
                "IDs": omero.rtypes.rlist(ids),
                "Data_Type": omero.rtypes.rstring(data_type),
                "Thumbnail_Size": omero.rtypes.rint(16),
                "Max_Columns": omero.rtypes.rint(6),
                "Format": omero.rtypes.rstring("PNG"),
                "Figure_Name": omero.rtypes.rstring("thumbnail-test"),
                "Tag_IDs": omero.rtypes.rlist(tag_ids)
            }
        else:
            args = {
                "Data_Type": omero.rtypes.rstring(data_type),
                "IDs": omero.rtypes.rlist(ids)
            }
        ann = run_script(client, sid, args, "File_Annotation")

        # should have figures attached to dataset and first image.
        c = self.new_client(user=user)
        check_file_annotation(c, ann, parent_type=data_type)
コード例 #4
0
    def test_movie_roi_figure(self, all_parameters):

        sid = super(TestFigureExportScripts, self).get_script(movie_roi_figure)
        assert sid > 0

        client, user = self.new_client_and_user()

        # create several test images in a dataset
        dataset = self.make_dataset("movieRoiFig-test", client=client)
        project = self.make_project("movieRoiFig-test", client=client)
        self.link(project, dataset, client=client)

        # put some images in dataset
        image_ids = []
        session = client.getSession()
        for i in range(2):
            image = self.create_test_image(256, 256, 10, 3, 1, session)
            image_ids.append(omero.rtypes.rlong(image.id.val))
            self.link(dataset, image, client=client)

            # add roi -   x, y, width, height
            add_rectangle_roi(session.getUpdateService(), 50 + (i * 10),
                              100 - (i * 10), 50 + (i * 5), 100 - (i * 5),
                              image.id.val)

        if all_parameters:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids),
                "ROI_Zoom": omero.rtypes.rfloat(3),
                "Max_Columns": omero.rtypes.rint(10),
                "Resize_Images": omero.rtypes.rbool(True),
                "Width": omero.rtypes.rint(200),
                "Height": omero.rtypes.rint(200),
                "Image_Labels": omero.rtypes.rstring("Datasets"),
                "Show_ROI_Duration": omero.rtypes.rbool(True),
                # will be ignored since no pixelsize set
                "Scalebar": omero.rtypes.rint(10),
                # will be ignored since no pixelsize set
                "Scalebar_Colour": omero.rtypes.rstring("White"),
                # won't be found - but should still work
                "Roi_Selection_Label": omero.rtypes.rstring("fakeTest"),
                "Algorithm": omero.rtypes.rstring("Mean Intensity"),
                "Figure_Name": omero.rtypes.rstring("movieROITest")
            }
        else:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids)
            }
        ann = run_script(client, sid, args, "File_Annotation")

        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #5
0
    def test_batch_image_export(self):
        sid = super(TestExportScripts, self).get_script(batch_image_export)
        assert sid > 0

        client, user = self.new_client_and_user()
        # x,y,z,c,t
        image = self.create_test_image(100, 100, 1, 1, 1, client.getSession())
        image_ids = []
        image_ids.append(rlong(image.id.val))
        args = {"Data_Type": rstring("Image"), "IDs": rlist(image_ids)}
        ann = run_script(client, sid, args, "File_Annotation")
        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #6
0
    def test_export_figure_as(self, export_option, tmpdir):
        """Create images, add to figure and export as TIFF, PNG etc."""
        id = super(TestFigureScripts, self).get_script_by_name(path, name)
        assert id > 0
        # client, user = self.new_client_and_user()
        # Temp workaround for openmicroscopy/openmicroscopy/pull/5720
        client = self.client
        user = self.user
        script_service = client.sf.getScriptService()
        assert script_service.getParams(id) is not None
        # create an image
        size_t = 1
        size_x = 100
        size_y = 100
        size_z = 1
        size_c = 1
        session = client.getSession()
        image = self.create_test_image(size_x, size_y, size_z, size_c, size_t,
                                       session)

        image_id = self.import_pyramid(tmpdir, client=client)
        query_service = client.sf.getQueryService()
        big_image = query_service.findByQuery(
            """select i from Image i left outer join fetch i.pixels as p
               where i.id = :id""",
            ParametersI().addId(image_id))

        figure_name = "test_export_figure_as_%s" % export_option
        json = create_figure([image, big_image])
        uri = "https://www.openmicroscopy.org/"
        args = {
            "Figure_JSON": omero.rtypes.rstring(json),
            "Export_Option": omero.rtypes.rstring(export_option),
            "Figure_Name": omero.rtypes.rstring(figure_name),
            "Webclient_URI": omero.rtypes.rstring(uri)
        }
        robj = run_script(client, id, args, "New_Figure")
        ann = robj.getValue()
        # New image is returned when it is an OMERO image
        if export_option is "OMERO":
            assert isinstance(ann, Image)
        else:
            c = self.new_client(user=user)
            check_file_annotation(c, ann, link_count=2)
コード例 #7
0
ファイル: test_figure_scripts.py プロジェクト: ome/figure
    def test_export_figure_as(self, export_option, tmpdir):
        """Create images, add to figure and export as TIFF, PNG etc."""
        id = super(TestFigureScripts, self).get_script_by_name(path, name)
        assert id > 0
        # client, user = self.new_client_and_user()
        # Temp workaround for openmicroscopy/openmicroscopy/pull/5720
        client = self.client
        user = self.user
        script_service = client.sf.getScriptService()
        assert script_service.getParams(id) is not None
        # create an image
        size_t = 1
        size_x = 100
        size_y = 100
        size_z = 1
        size_c = 1
        session = client.getSession()
        image = self.create_test_image(size_x, size_y, size_z, size_c,
                                       size_t, session)

        image_id = self.import_pyramid(tmpdir, client=client)
        query_service = client.sf.getQueryService()
        big_image = query_service.findByQuery(
            """select i from Image i left outer join fetch i.pixels as p
               where i.id = :id""",
            ParametersI().addId(image_id))

        figure_name = "test_export_figure_as_%s" % export_option
        json = create_figure([image, big_image])
        uri = "https://www.openmicroscopy.org/"
        args = {
            "Figure_JSON": omero.rtypes.rstring(json),
            "Export_Option": omero.rtypes.rstring(export_option),
            "Figure_Name": omero.rtypes.rstring(figure_name),
            "Webclient_URI": omero.rtypes.rstring(uri)
        }
        robj = run_script(client, id, args, "New_Figure")
        ann = robj.getValue()
        # New image is returned when it is an OMERO image
        if export_option is "OMERO":
            assert isinstance(ann, Image)
        else:
            c = self.new_client(user=user)
            check_file_annotation(c, ann, link_count=2)
コード例 #8
0
    def test_kymograph_analysis(self):
        script_id = super(TestAnalysisScripts, self).get_script(kymograph)

        client, user = self.new_client_and_user()

        # create a test image
        size_t = 3
        size_x = 100
        size_y = 100
        # x,y,z,c,t
        session = client.getSession()
        image = self.create_test_image(size_x, size_y, 1, 2, size_t, session)
        image_id = image.id.val
        roi = create_roi(image_id, 0, size_x / 2, 0, size_y / 2, size_t, True)
        session.getUpdateService().saveAndReturnObject(roi)
        image_ids = []
        image_ids.append(omero.rtypes.rlong(image_id))
        args = {
            "Data_Type": omero.rtypes.rstring("Image"),
            "IDs": omero.rtypes.rlist(image_ids),
            "Line_Width": omero.rtypes.rint(5)
        }

        kymograph_img = run_script(client, script_id, args, "New_Image")
        # now analyse the Kymograph image
        sid = super(TestAnalysisScripts, self).get_script(kymograph_analysis)
        assert sid > 0

        image_id = kymograph_img.getValue().id.val
        roi = create_roi(image_id, 0, 2, 0, 2, 1, False)
        session.getUpdateService().saveAndReturnObject(roi)
        image_ids = []
        image_ids.append(omero.rtypes.rlong(image_id))
        args = {
            "Data_Type": omero.rtypes.rstring("Image"),
            "IDs": omero.rtypes.rlist(image_ids)
        }

        ann = run_script(client, sid, args, "Line_Data")
        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #9
0
    def test_batch_roi_export(self, all_planes):
        sid = super(TestExportScripts, self).get_script(batch_roi_export)
        assert sid > 0

        client, user = self.new_client_and_user()
        session = client.getSession()
        # x,y,z,c,t
        size_c = 2
        size_z = 3
        size_t = 4
        image_name = "ROI_image"
        label_text = "Shape_Text"
        image = self.create_test_image(100,
                                       100,
                                       size_z,
                                       size_c,
                                       size_t,
                                       session,
                                       name=image_name)
        # Add 2 Shapes... A Rectangle and Polygon covering same area
        polygon = omero.model.PolygonI()
        polygon.points = rstring("10,10, 91,10, 91,91, 10,91")
        polygon.textValue = rstring(label_text)
        rect = omero.model.RectangleI()
        rect.x = rdouble(10)
        rect.y = rdouble(10)
        rect.width = rdouble(81)
        rect.height = rdouble(81)
        rect.theZ = rint(1)
        rect.theT = rint(1)
        # ...to an ROI
        roi = omero.model.RoiI()
        roi.setImage(image)
        roi.addShape(polygon)
        roi.addShape(rect)
        roi = session.getUpdateService().saveAndReturnObject(roi)
        shapes = roi.copyShapes()
        polygon = shapes[0]

        image_ids = []
        file_name = "test_batch_roi_export"
        image_ids.append(rlong(image.id.val))
        channels = [rint(c) for c in range(4)]
        args = {
            "Data_Type": rstring("Image"),
            "IDs": rlist(image_ids),
            # Should ignore Channels out of range. 1-based index
            "Channels": rlist(channels),
            "Export_All_Planes": rbool(all_planes),
            "File_Name": rstring(file_name)
        }
        ann = run_script(client, sid, args, "File_Annotation")
        c = self.new_client(user=user)
        check_file_annotation(c, ann, file_name="%s.csv" % file_name)
        file_id = ann.getValue().getFile().id.val
        csv_text = get_file_contents(self.new_client(user=user), file_id)

        # Check we have expected number of rows
        polygon_planes = size_c
        if all_planes:
            polygon_planes = size_c * size_z * size_t
        # Rows: Header + rect with Z/T set + polygon without Z/T
        row_count = 1 + size_c + polygon_planes
        assert len(csv_text.split("\n")) == row_count

        # Check first 2 rows of csv (except Std dev)
        zt = ","
        points_min_max_sum_mean = ",,,,"
        area = "6561.0"
        if all_planes:
            zt = "1,1"
            points_min_max_sum_mean = "6561,10.0,90.0,328050.0,50.0"
        expected = ("image_id,image_name,roi_id,shape_id,type,text,"
                    "z,t,channel,area (pixels),length (pixels),"
                    "points,min,max,sum,mean,std_dev,"
                    "X,Y,Width,Height,RadiusX,RadiusY,X1,Y1,X2,Y2,Points\n"
                    "%s,\"%s\",%s,%s,polygon,\"%s\",%s,0,%s,,%s,") % (
                        image.id.val, image_name, roi.id.val, polygon.id.val,
                        label_text, zt, area, points_min_max_sum_mean)
        assert csv_text.startswith(expected)
コード例 #10
0
    def test_split_view_figure(self, all_parameters):

        id = super(TestFigureExportScripts, self).get_script(split_view_figure)
        assert id > 0

        client, user = self.new_client_and_user()

        # create several test images in a dataset
        dataset = self.make_dataset("thumbnailFigure-test", client=client)
        project = self.make_project("thumbnailFigure-test", client=client)
        self.link(project, dataset, client=client)

        # put some images in dataset
        session = client.getSession()
        image_ids = []
        for i in range(2):
            image = self.create_test_image(256, 200, 5, 4, 1, session)
            image_ids.append(omero.rtypes.rlong(image.id.val))
            self.link(dataset, image, client=client)

        c_names_map = omero.rtypes.rmap({
            '0': omero.rtypes.rstring("DAPI"),
            '1': omero.rtypes.rstring("GFP"),
            '2': omero.rtypes.rstring("Red"),
            '3': omero.rtypes.rstring("ACA")
        })
        blue = omero.rtypes.rlong(255)
        red = omero.rtypes.rlong(16711680)
        mrgd_colours_map = omero.rtypes.rmap({'0': blue, '1': blue, '3': red})
        if all_parameters:
            args = {
                "Data_Type":
                omero.rtypes.rstring("Image"),
                "IDs":
                omero.rtypes.rlist(image_ids),
                "Z_Start":
                omero.rtypes.rint(0),
                "Z_End":
                omero.rtypes.rint(3),
                "Channel_Names":
                c_names_map,
                "Split_Indexes":
                omero.rtypes.rlist(
                    [omero.rtypes.rint(1),
                     omero.rtypes.rint(2)]),
                "Split_Panels_Grey":
                omero.rtypes.rbool(True),
                "Merged_Colours":
                mrgd_colours_map,
                "Merged_Names":
                omero.rtypes.rbool(True),
                "Width":
                omero.rtypes.rint(200),
                "Height":
                omero.rtypes.rint(200),
                "Image_Labels":
                omero.rtypes.rstring("Datasets"),
                "Algorithm":
                omero.rtypes.rstring("Mean Intensity"),
                "Stepping":
                omero.rtypes.rint(1),
                # will be ignored since no pixelsize set
                "Scalebar":
                omero.rtypes.rint(10),
                "Format":
                omero.rtypes.rstring("PNG"),
                "Figure_Name":
                omero.rtypes.rstring("splitViewTest"),
            }
        else:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids),
                "Merged_Colours": mrgd_colours_map,
                "Format": omero.rtypes.rstring("PNG"),
                "Figure_Name": omero.rtypes.rstring("splitViewTest")
            }
        ann = run_script(client, id, args, "File_Annotation")

        c = self.new_client(user=user)
        check_file_annotation(c, ann)
コード例 #11
0
    def test_roi_figure(self, all_parameters):

        sid = super(TestFigureExportScripts, self).get_script(roi_figure)
        assert sid > 0

        client, user = self.new_client_and_user()

        # create several test images in a dataset
        dataset = self.make_dataset("roiFig-test", client=client)
        project = self.make_project("roiFig-test", client=client)
        self.link(project, dataset, client=client)

        # put some images in dataset
        image_ids = []
        session = client.getSession()
        for i in range(2):
            image = self.create_test_image(256, 200, 5, 4, 1, session)
            image_ids.append(omero.rtypes.rlong(image.id.val))
            self.link(dataset, image, client=client)
            add_rectangle_roi(session.getUpdateService(), 50 + (i * 10),
                              100 - (i * 10), 50 + (i * 5), 100 - (i * 5),
                              image.id.val)

        c_names_map = omero.rtypes.rmap({
            '0': omero.rtypes.rstring("DAPI"),
            '1': omero.rtypes.rstring("GFP"),
            '2': omero.rtypes.rstring("Red"),
            '3': omero.rtypes.rstring("ACA")
        })
        blue = omero.rtypes.rint(255)
        red = omero.rtypes.rint(16711680)
        mrgd_colours_map = omero.rtypes.rmap({'0': blue, '1': blue, '3': red})
        if all_parameters:
            args = {
                "Data_Type":
                omero.rtypes.rstring("Image"),
                "IDs":
                omero.rtypes.rlist(image_ids),
                "Channel_Names":
                c_names_map,
                "Split_Indexes":
                omero.rtypes.rlist(
                    [omero.rtypes.rlong(1),
                     omero.rtypes.rlong(2)]),
                "Split_Panels_Grey":
                omero.rtypes.rbool(True),
                "Merged_Colours":
                mrgd_colours_map,
                "Merged_Names":
                omero.rtypes.rbool(True),
                "Width":
                omero.rtypes.rint(200),
                "Height":
                omero.rtypes.rint(200),
                "Image_Labels":
                omero.rtypes.rstring("Datasets"),
                "Algorithm":
                omero.rtypes.rstring("Mean Intensity"),
                "Stepping":
                omero.rtypes.rint(1),
                # will be ignored since no pixelsize set
                "Scalebar":
                omero.rtypes.rint(10),
                "Format":
                omero.rtypes.rstring("PNG"),
                "Figure_Name":
                omero.rtypes.rstring("splitViewTest"),
                "Overlay_Colour":
                omero.rtypes.rstring("Red"),
                "ROI_Zoom":
                omero.rtypes.rfloat(3),
                # won't be found - but should still work
                "ROI_Label":
                omero.rtypes.rstring("fakeTest"),
            }
        else:
            args = {
                "Data_Type": omero.rtypes.rstring("Image"),
                "IDs": omero.rtypes.rlist(image_ids)
            }

        ann = run_script(client, sid, args, "File_Annotation")

        c = self.new_client(user=user)
        check_file_annotation(c, ann)