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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)