def downloadImage(queryService, rawPixelStore, imageId, imageName): """ This method downloads the first (only?) plane of the OMERO image and saves it as a local image. @param session The OMERO session @param imageId The ID of the image to download @param imageName The name of the image to write. If no path, saved in the current directory. """ # get pixels with pixelsType query_string = "select p from Pixels p join fetch p.image i join fetch p.pixelsType pt where i.id='%d'" % imageId pixels = queryService.findByQuery(query_string, None) theX = pixels.getSizeX().getValue() theY = pixels.getSizeY().getValue() # get the plane theZ, theC, theT = (0,0,0) pixelsId = pixels.getId().getValue() bypassOriginalFile = True rawPixelStore.setPixelsId(pixelsId, bypassOriginalFile) plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, theZ, theC, theT) array2spider(plane2D, imageName)
import numpy from Spider.Spiderarray import array2spider size = 65 I = numpy.zeros((size,size)) # create a blank array for j in range(size): for i in range(size): I[j][i] = i # Array[row][column] array2spider(I, 'tmp001.dat')
def omeroToEm(commandArgs): # log-in client = omero.client(commandArgs["host"]) session = client.createSession(commandArgs["username"], commandArgs["password"]) # get the services we need queryService = session.getQueryService() updateService = session.getUpdateService() rawFileStore = session.createRawFileStore() rawPixelStore = session.createRawPixelsStore() containerService = session.getContainerService() images = [] if "image" in commandArgs: iId = long(commandArgs["image"]) i = containerService.getImages("Image", [iId], None)[0] images.append(i) elif "dataset" in commandArgs: dIds = [long(commandArgs["dataset"])] images = containerService.getImages("Dataset", dIds, None) else: print "No image or dataset ID given" return path = None if "path" in commandArgs: path = commandArgs["path"] if not os.path.exists(path): print "Given path: %s not found. Saving images in current directory." % path path = None extension = "dat" # default format = None if "extension" in commandArgs: ext = commandArgs["extension"] if ext in filetypes: extension = ext print "Saving all images as .%s files." % extension else: print "Invalid extension: %s (not supported by Spider). Using %s" % (ext, extension) for image in images: iName = image.getName().getValue() imageName = os.path.basename(iName) # make sure no dir separators in name. imageId = image.getId().getValue() if not imageName.endswith(".%s" % extension): imageName = "%s.%s" % (imageName, extension) if path: imageName = os.path.join(path,imageName) i = 1 # don't overwrite. Add number before extension dirName, ext = imageName.rsplit(".", 1) while os.path.exists(imageName): imageName = "%s_%s.%s" % (dirName,i,ext) i +=1 print "Preparing to save image: %s" % imageName figLegend = "" # get pixels, with pixelsType query_string = "select p from Pixels p join fetch p.image i join fetch p.pixelsType pt where i.id='%d'" % imageId pixels = queryService.findByQuery(query_string, None) ptype = pixels.pixelsType.getValue().getValue() sizeX = pixels.getSizeX().getValue() sizeY = pixels.getSizeY().getValue() sizeZ = pixels.getSizeZ().getValue() # prepare rawPixelStore theC, theT = (0, 0) pixelsId = pixels.getId().getValue() bypassOriginalFile = True rawPixelStore.setPixelsId(pixelsId, bypassOriginalFile) if sizeZ == 1: plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, 0, theC, theT) array2spider(plane2D, imageName) else: numpyType = pixelstypetopython.toNumpy(ptype) array3D = zeros( (sizeZ, sizeY, sizeX), dtype=numpyType ) for z in range(sizeZ): # get each plane and add to 3D array plane2D = scriptUtil.downloadPlane(rawPixelStore, pixels, z, theC, theT) array3D[z] = plane2D array2spider(array3D, imageName)
import numpy from Spider.Spiderarray import array2spider size = 65 I = numpy.zeros((size, size)) # create a blank array for j in range(size): for i in range(size): I[j][i] = i # Array[row][column] array2spider(I, 'tmp001.dat')